libstdc++: Limit new basic_string(nullptr_t) constructor to C++23 [PR104099]
authorJonathan Wakely <jwakely@redhat.com>
Tue, 18 Jan 2022 16:26:45 +0000 (16:26 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Tue, 18 Jan 2022 20:41:46 +0000 (20:41 +0000)
commitfe3ed885cda5ab920d361b694ee539242052022f
treea63b3cabe4968a46b161824b30fa700c8bea1feb
parent3c4a54adb2164315d18fd8980c0fc37eb3d22252
libstdc++: Limit new basic_string(nullptr_t) constructor to C++23 [PR104099]

The new deleted constructors added by P2166R1 are a breaking change,
making previously valid code ill-formed in C++23. As a result, they
should only be defined for C++23 and not for C++11 and up.

libstdc++-v3/ChangeLog:

PR libstdc++/104099
* include/bits/basic_string.h (basic_string(nullptr_t)): Only
define for C++23.
(operator=(nullptr_t)): Likewise.
* include/bits/cow_string.h: Likewise.
* include/std/string_view (basic_string_view(nullptr_t)):
Likewise.
* testsuite/21_strings/basic_string/cons/char/nullptr.cc: Adjust
expected error. Add examples that become ill-formed in C++23.
* testsuite/21_strings/basic_string_view/cons/char/nonnull.cc:
Adjust expected errors.
* testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc:
Likewise.
libstdc++-v3/include/bits/basic_string.h
libstdc++-v3/include/bits/cow_string.h
libstdc++-v3/include/std/string_view
libstdc++-v3/testsuite/21_strings/basic_string/cons/char/nullptr.cc
libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/nonnull.cc
libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc