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

Reply via email to