[libcxx-commits] [libcxx] Fix use of std::errc() for C++ < 11 (PR #138522)
via libcxx-commits
libcxx-commits at lists.llvm.org
Mon May 5 05:40:23 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libcxx
Author: Stephan Bergmann (stbergmann)
<details>
<summary>Changes</summary>
After 8fc2538f338088bd084d217a7569d72c3b630e8c "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.
---
Full diff: https://github.com/llvm/llvm-project/pull/138522.diff
1 Files Affected:
- (modified) libcxx/include/locale (+1-1)
``````````diff
diff --git a/libcxx/include/locale b/libcxx/include/locale
index fa2620d883598..b206bf8f162f9 100644
--- a/libcxx/include/locale
+++ b/libcxx/include/locale
@@ -1277,7 +1277,7 @@ _LIBCPP_HIDE_FROM_ABI inline _OutputIterator num_put<_CharT, _OutputIterator>::_
}
auto __res = std::__to_chars_integral(__buffer_ptr, __char_buffer + __buffer_size, __uval, __base);
- _LIBCPP_ASSERT_INTERNAL(__res.__ec == std::errc(), "to_chars: invalid maximum buffer size computed?");
+ _LIBCPP_ASSERT_INTERNAL(__res.__ec == std::errc(0), "to_chars: invalid maximum buffer size computed?");
// Make letters uppercase
if (__flags & ios_base::hex && __flags & ios_base::uppercase) {
``````````
</details>
https://github.com/llvm/llvm-project/pull/138522
More information about the libcxx-commits
mailing list