mclow.lists added inline comments.

================
Comment at: .gitignore:7
 *.so
+*.core
+
----------------
I'm pretty sure this file doesn't belong in this diff.


================
Comment at: include/charconv:89
+_LIBCPP_BEGIN_NAMESPACE_STD
+
+enum class _LIBCPP_ENUM_VIS chars_format
----------------
Quuxplusone wrote:
> lichray wrote:
> > mclow.lists wrote:
> > > lichray wrote:
> > > > EricWF wrote:
> > > > > We need to hide these names when `_LIBCPP_STD_VER < 17`, since we're 
> > > > > not allowed to introduce new names into namespace `std` in older 
> > > > > dialects.
> > > > But this header is backported to C++11, so I intended to not to guard 
> > > > it.
> > > > But this header is backported to C++11, so I intended to not to guard 
> > > > it.
> > > 
> > > In general, we don't provide new features for old language versions.
> > > 
> > > The only time we've ever done that is for `string_view`, and I'm 
> > > **still** not sure I did the right thing there.
> > We need to decide on this... From my point of view this header will be 
> > widely used by formatting and logging libraries, and it doesn't add much to 
> > the community by enforcing C++17 here, especially when the interface we 
> > specified are very simple and not using any features beyond C++11.
> This question is also relevant to my interests, in re `<memory_resource>`.
> From my point of view this header will be widely used by formatting and 
> logging libraries,

Non-portable formatting and logging libraries - if we provide it before C++17 
and they use it.



================
Comment at: include/charconv:151
+
+#if __has_builtin(__builtin_clzll)
+    if (__tx::digits <= __diff || __tx::width(__value) <= __diff)
----------------
lichray wrote:
> EricWF wrote:
> > `<algorithm>` already has a `__clz` wrapper for `__builtin_clz` et al. We 
> > should use that instead. That also allows us to get rid of the fallback 
> > implementation, and it correctly uses the builtin for compilers like GCC 
> > which don't provide `__has_builtin`.
> I saw that, and I agree this can be improved, however `<algorithm>` would be 
> too heavy to include here.  Thoughts?
We could make this depend on `<bit>` once P0553 is adopted. (use `countl_zero`)

 My intention there is to provide `__countl_zero` etc for internal use before 
C++20, and the public names for C++20 and later.  That approach could be used 
here as well, if we choose.



================
Comment at: include/charconv:234
+to_chars(char* __first, char* __last, _Tp __value, int __base)
+    -> to_chars_result
+{
----------------
lichray wrote:
> mclow.lists wrote:
> > Why use the trailing return type here?
> > I don't see any advantage - it doesn't depend on the parameters (template 
> > or runtime).
> > 
> > 
> Because clang-format doesn't distinguish storage specifiers and 
> simple-type-specifiers, and I want to format return types along with function 
> signatures rather than letting hanging somewhere.
That's an argument for fixing clang-format, not for writing the code this way.



================
Comment at: include/charconv:240
+template <typename _Tp>
+struct _LIBCPP_HIDDEN traits : __traits_base<_Tp>
+{
----------------
I'm pretty sure we can't declare a type named `traits` - even inside a 
namespace.



================
Comment at: 
test/std/utilities/charconv/charconv.from.chars/integral.pass.cpp:133
+        {
+            // If the pattern allows for an optional sign,
+            char s[] = " - 9+12";
----------------
Rather than attempting to reuse bits of the string here, I would define a 
struct:

    struct test_data {
        const char *input;
        const char *output;
        std::errc err;
        T value;
        };

and then write a bunch of test cases and iterate over them.


Repository:
  rCXX libc++

https://reviews.llvm.org/D41458



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to