libstdc++: Support constexpr global std::string for size < 15 [PR105995]
I don't think this is required by the standard, but it's easy to support. libstdc++-v3/ChangeLog: PR libstdc++/105995 * include/bits/basic_string.h (_M_use_local_data): Initialize the entire SSO buffer. * testsuite/21_strings/basic_string/cons/char/105995.cc: New test.
This commit is contained in:
parent
51309d1158
commit
98a0d72a61
@ -352,7 +352,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
|
||||
{
|
||||
#if __cpp_lib_is_constant_evaluated
|
||||
if (std::is_constant_evaluated())
|
||||
_M_local_buf[0] = _CharT();
|
||||
for (_CharT& __c : _M_local_buf)
|
||||
__c = _CharT();
|
||||
#endif
|
||||
return _M_local_data();
|
||||
}
|
||||
|
@ -0,0 +1,9 @@
|
||||
// { dg-options "-std=gnu++20" }
|
||||
// { dg-do compile { target c++20 } }
|
||||
// { dg-require-effective-target cxx11_abi }
|
||||
|
||||
// PR libstdc++/105995
|
||||
// Not required by the standard, but supported for QoI.
|
||||
constexpr std::string pr105995_empty;
|
||||
constexpr std::string pr105995_partial = "0";
|
||||
constexpr std::string pr105995_full = "0123456789abcde";
|
Loading…
Reference in New Issue
Block a user