From: François Dumont Date: Mon, 30 Sep 2019 20:33:51 +0000 (+0000) Subject: Implement C++20 constexpr comparison operators for __debug::array (P1023). X-Git-Tag: upstream/12.2.0~21515 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2d2ad752c044c4a0520d750b33cb88e9612936b3;p=platform%2Fupstream%2Fgcc.git Implement C++20 constexpr comparison operators for __debug::array (P1023). * include/debug/array: Add C++20 constexpr to comparison operators. * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc: Adapt dg-error line numbers. * testsuite/23_containers/array/tuple_interface/ tuple_element_debug_neg.cc: Likewise. From-SVN: r276375 --- diff --git a/libstdc++-v3/include/debug/array b/libstdc++-v3/include/debug/array index 2f8eb84..5566a08 100644 --- a/libstdc++-v3/include/debug/array +++ b/libstdc++-v3/include/debug/array @@ -234,16 +234,19 @@ namespace __debug // Array comparisons. template + _GLIBCXX20_CONSTEXPR inline bool operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) { return std::equal(__one.begin(), __one.end(), __two.begin()); } template + _GLIBCXX20_CONSTEXPR inline bool operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) { return !(__one == __two); } template + _GLIBCXX20_CONSTEXPR inline bool operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) { @@ -252,16 +255,19 @@ namespace __debug } template + _GLIBCXX20_CONSTEXPR inline bool operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) { return __two < __one; } template + _GLIBCXX20_CONSTEXPR inline bool operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) { return !(__one > __two); } template + _GLIBCXX20_CONSTEXPR inline bool operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) { return !(__one < __two); } diff --git a/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_debug_neg.cc b/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_debug_neg.cc index f9880b4..3c60a43 100644 --- a/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_debug_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_debug_neg.cc @@ -27,6 +27,6 @@ int n1 = std::get<1>(a); int n2 = std::get<1>(std::move(a)); int n3 = std::get<1>(ca); -// { dg-error "static assertion failed" "" { target *-*-* } 288 } -// { dg-error "static assertion failed" "" { target *-*-* } 297 } -// { dg-error "static assertion failed" "" { target *-*-* } 305 } +// { dg-error "static assertion failed" "" { target *-*-* } 294 } +// { dg-error "static assertion failed" "" { target *-*-* } 303 } +// { dg-error "static assertion failed" "" { target *-*-* } 311 } diff --git a/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc b/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc index 10b1681..a6b44eb 100644 --- a/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc @@ -22,4 +22,4 @@ typedef std::tuple_element<1, std::array>::type type; -// { dg-error "static assertion failed" "" { target *-*-* } 331 } +// { dg-error "static assertion failed" "" { target *-*-* } 376 }