aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2022-10-03 12:10:07 +0100
committerJonathan Wakely <jwakely@redhat.com>2022-10-03 12:45:05 +0100
commit866263a5fe0d657cb9ec06d01bbc100900159036 (patch)
tree8624429f4a3421e10c9a48ae0e00cf0c508d8e48
parentc0129d6b2a5f2b3cfedd213d48c95581f75312aa (diff)
downloadgcc-866263a5fe0d657cb9ec06d01bbc100900159036.zip
gcc-866263a5fe0d657cb9ec06d01bbc100900159036.tar.gz
gcc-866263a5fe0d657cb9ec06d01bbc100900159036.tar.bz2
libstdc++: Fix tests broken by C++23 P2266R3 "Simpler implicit move"
In C++23 mode these tests started to FAIL because an rvalue reference parameter can no longer be bound to an lvalue reference return type. As confirmed by Ville (who added these tests) the problem overloads are not intended to be called, and only exist to verify that they don't interfere with the intended behaviour. This changes the function bodies to just throw, so that the tests will fail if the function is called. libstdc++-v3/ChangeLog: * testsuite/27_io/basic_ostream/inserters_other/char/6.cc: Change body of unused operator<< overload to throw if called. * testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc: Likewise.
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/6.cc2
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc2
2 files changed, 2 insertions, 2 deletions
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/6.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/6.cc
index f62023c..e45af3c 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/6.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/6.cc
@@ -42,7 +42,7 @@ std::ostream& operator<<(std::ostream&, const X&) = delete;
struct Y {};
std::ostream& operator<<(std::ostream& os, const Y&) {return os;}
-std::ostream& operator<<(std::ostream&& os, const Y&) {return os;}
+std::ostream& operator<<(std::ostream&& os, const Y&) {throw 1;} // not used
struct Z{};
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc
index 6bbf4a7..7ef6442 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc
@@ -42,7 +42,7 @@ std::wostream& operator<<(std::wostream&, const X&) = delete;
struct Y {};
std::wostream& operator<<(std::wostream& os, const Y&) {return os;}
-std::wostream& operator<<(std::wostream&& os, const Y&) {return os;}
+std::wostream& operator<<(std::wostream&& os, const Y&) {throw 1;} // not used
struct Z{};