From 8e2592a88821511aa45c3325246f3b08a88fa063 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Fri, 31 Jul 2020 17:51:00 +0100 Subject: [PATCH] libstdc++: Adjust tests that give different results in C++20 libstdc++-v3/ChangeLog: * testsuite/20_util/is_aggregate/value.cc: Adjust for changes to definition of aggregates in C++20. * testsuite/20_util/optional/requirements.cc: Adjust for defaulted comparisons in C++20. --- .../testsuite/20_util/is_aggregate/value.cc | 15 ++++++++++++--- .../testsuite/20_util/optional/requirements.cc | 3 +++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/libstdc++-v3/testsuite/20_util/is_aggregate/value.cc b/libstdc++-v3/testsuite/20_util/is_aggregate/value.cc index bef9dc4ca07..085eb557419 100644 --- a/libstdc++-v3/testsuite/20_util/is_aggregate/value.cc +++ b/libstdc++-v3/testsuite/20_util/is_aggregate/value.cc @@ -45,8 +45,6 @@ void test01() UnionType>(true), ""); static_assert(test_category(true), ""); - static_assert(test_category(true), ""); static_assert(test_category(true), ""); static_assert(test_category(true), ""); static_assert(test_category(true), ""); - pos(); +#if __cplusplus == 201703L + static_assert(test_category(true), ""); + pos(); +#endif // Negative tests. static_assert(test_category(false), ""); neg(); +#if __cplusplus > 201703L + // In C++20 aggregates cannot have user-declared constructors. + static_assert(test_category(false), ""); + neg(); +#endif } diff --git a/libstdc++-v3/testsuite/20_util/optional/requirements.cc b/libstdc++-v3/testsuite/20_util/optional/requirements.cc index 560e6f7691f..d8d52ab5367 100644 --- a/libstdc++-v3/testsuite/20_util/optional/requirements.cc +++ b/libstdc++-v3/testsuite/20_util/optional/requirements.cc @@ -312,7 +312,10 @@ struct JustEq {}; bool operator==(const JustEq&, const JustEq&); static_assert(is_eq_comparable>::value, ""); +#if __cplusplus == 201703L +// In C++20 operator!= can be synthesized from operator== static_assert(!is_neq_comparable>::value, ""); +#endif static_assert(!is_lt_comparable>::value, ""); static_assert(!is_gt_comparable>::value, ""); static_assert(!is_le_comparable>::value, ""); -- 2.30.2