Skip to content

Commit 251e2cb

Browse files
committed
Fix use of std::errc() for C++ < 11
After 8fc2538 "Reapply '[libc++] Optimize num_put integral functions' (#131613) (#133572)", > $ cat test.cc > #include <locale> started to fail with > $ clang++ -stdlib=libc++ -std=c++03 -fsyntax-only test.cc > In file included from test.cc:1: > ~/llvm/inst/bin/../include/c++/v1/locale:1280:41: error: no matching constructor for initialization of 'std::errc' > 1280 | _LIBCPP_ASSERT_INTERNAL(__res.__ec == std::errc(), "to_chars: invalid maximum buffer size computed?"); > | ^ > ~/llvm/inst/bin/../include/c++/v1/__assert:94:86: note: expanded from macro '_LIBCPP_ASSERT_INTERNAL' > 94 | # define _LIBCPP_ASSERT_INTERNAL(expression, message) _LIBCPP_ASSERT(expression, message) > | ^ > ~/llvm/inst/bin/../include/c++/v1/__assert:21:39: note: expanded from macro '_LIBCPP_ASSERT' > 21 | (__builtin_expect(static_cast<bool>(expression), 1) \ > | ^ > ~/llvm/inst/bin/../include/c++/v1/__system_error/errc.h:262:36: note: candidate constructor not viable: requires single argument '__v', but no arguments were provided > 262 | _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(errc) > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~ > ~/llvm/inst/bin/../include/c++/v1/__config:618:29: note: expanded from macro '_LIBCPP_DECLARE_STRONG_ENUM_EPILOG' > 618 | _LIBCPP_HIDE_FROM_ABI x(__lx __v) : __v_(__v) {} \ > | ^ ~~~~~~~~ > ~/llvm/inst/bin/../include/c++/v1/__system_error/errc.h:262:36: note: candidate constructor not viable: requires single argument '__v', but no arguments were provided > 262 | _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(errc) > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~ > ~/llvm/inst/bin/../include/c++/v1/__config:619:38: note: expanded from macro '_LIBCPP_DECLARE_STRONG_ENUM_EPILOG' > 619 | _LIBCPP_HIDE_FROM_ABI explicit x(int __v) : __v_(static_cast<__lx>(__v)) {} \ > | ^ ~~~~~~~ > ~/llvm/inst/bin/../include/c++/v1/__system_error/errc.h:143:29: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided > 143 | _LIBCPP_DECLARE_STRONG_ENUM(errc){ > | ^~~~ > 1 error generated.
1 parent 45d96df commit 251e2cb

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

libcxx/include/locale

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1277,7 +1277,7 @@ _LIBCPP_HIDE_FROM_ABI inline _OutputIterator num_put<_CharT, _OutputIterator>::_
12771277
}
12781278

12791279
auto __res = std::__to_chars_integral(__buffer_ptr, __char_buffer + __buffer_size, __uval, __base);
1280-
_LIBCPP_ASSERT_INTERNAL(__res.__ec == std::errc(), "to_chars: invalid maximum buffer size computed?");
1280+
_LIBCPP_ASSERT_INTERNAL(__res.__ec == std::errc(0), "to_chars: invalid maximum buffer size computed?");
12811281

12821282
// Make letters uppercase
12831283
if (__flags & ios_base::hex && __flags & ios_base::uppercase) {

0 commit comments

Comments
 (0)