https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103295
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> --- Which means this is enough to make Clang happy for the comment 0 example: --- a/libstdc++-v3/include/bits/basic_string.tcc +++ b/libstdc++-v3/include/bits/basic_string.tcc @@ -167,6 +167,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _M_construct(_InIterator __beg, _InIterator __end, std::input_iterator_tag) { +#if __cpp_lib_is_constant_evaluated + if (__builtin_is_constant_evaluated()) + _M_local_buf[0] = _CharT(); +#endif + size_type __len = 0; size_type __capacity = size_type(_S_local_capacity); @@ -223,6 +228,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _M_data(_M_create(__dnew, size_type(0))); _M_capacity(__dnew); } +#if __cpp_lib_is_constant_evaluated + else if (__builtin_is_constant_evaluated()) + _M_local_buf[0] = _CharT(); +#endif // Check for out_of_range and length_error exceptions. __try @@ -247,6 +256,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _M_data(_M_create(__n, size_type(0))); _M_capacity(__n); } +#if __cpp_lib_is_constant_evaluated + else if (__builtin_is_constant_evaluated()) + _M_local_buf[0] = _CharT(); +#endif if (__n) this->_S_assign(_M_data(), __n, __c);