https://gcc.gnu.org/g:2ae6b772dc5ebd2ce209f613828288a99447659a
commit r17-757-g2ae6b772dc5ebd2ce209f613828288a99447659a Author: Tomasz KamiĆski <[email protected]> Date: Mon May 25 16:30:46 2026 +0200 libstdc++: Fix some test failures due trivial unions (P3074R7) change. The corresponding types are now trivially destructible, per changes from P3074R7, see PR119059. libstdc++-v3/ChangeLog: * testsuite/20_util/is_constructible/value-2.cc: Adjust expected value for C++26 (__cpp_trivial_union >= 202502L). * testsuite/20_util/is_destructible/value.cc: Likewise. * testsuite/20_util/is_nothrow_destructible/value.cc: Likewise. Diff: --- libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc | 4 ++++ libstdc++-v3/testsuite/20_util/is_destructible/value.cc | 4 ++++ libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc | 5 +++++ 3 files changed, 13 insertions(+) diff --git a/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc b/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc index d8c2f680d6dc..aabadc5c13d9 100644 --- a/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc +++ b/libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc @@ -715,7 +715,11 @@ static_assert(!std::is_constructible<const DelnAny, Empty, B, D>::value, "Error"); // Deleted members in unions with non-trivial members: +#if __cpp_trivial_union >= 202502L +static_assert(std::is_constructible<NontrivialUnion>::value, "Error"); +#else static_assert(!std::is_constructible<NontrivialUnion>::value, "Error"); +#endif static_assert(!std::is_constructible<NontrivialUnion, const NontrivialUnion&>::value, "Error"); diff --git a/libstdc++-v3/testsuite/20_util/is_destructible/value.cc b/libstdc++-v3/testsuite/20_util/is_destructible/value.cc index d6ce6949b9a2..e3c8481b0f8e 100644 --- a/libstdc++-v3/testsuite/20_util/is_destructible/value.cc +++ b/libstdc++-v3/testsuite/20_util/is_destructible/value.cc @@ -99,7 +99,11 @@ static_assert(!std::is_destructible<Del[]>::value, "Error"); static_assert(!std::is_destructible<const Del[]>::value, "Error"); // Deleted members in unions with non-trivial members: +#if __cpp_trivial_union >= 202502L +static_assert(std::is_destructible<NontrivialUnion>::value, "Error"); +#else static_assert(!std::is_destructible<NontrivialUnion>::value, "Error"); +#endif // Unusual copy: static_assert(std::is_destructible<UnusualCopy>::value, "Error"); diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc b/libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc index 71860099dbd3..5565d8111bbd 100644 --- a/libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc +++ b/libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc @@ -96,8 +96,13 @@ static_assert(!std::is_nothrow_destructible<TD2>::value, "Error"); static_assert(!std::is_nothrow_destructible<Aggr2>::value, "Error"); static_assert(!std::is_nothrow_destructible<Aggr2[1]>::value, "Error"); static_assert(!std::is_nothrow_destructible<TD1[1][2]>::value, "Error"); +#if __cpp_trivial_union >= 202502L +static_assert(std::is_nothrow_destructible<Ut>::value, "Error"); +static_assert(std::is_nothrow_destructible<Ut[3]>::value, "Error"); +#else static_assert(!std::is_nothrow_destructible<Ut>::value, "Error"); static_assert(!std::is_nothrow_destructible<Ut[3]>::value, "Error"); +#endif static_assert(!std::is_nothrow_destructible<AbstractDelDtor>::value, "Error"); static_assert(!std::is_nothrow_destructible<Abstract2>::value, "Error"); static_assert(!std::is_nothrow_destructible<Abstract3>::value, "Error");
