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);