diff options
author | Patrick Palka <ppalka@redhat.com> | 2023-05-12 08:36:37 -0400 |
---|---|---|
committer | Patrick Palka <ppalka@redhat.com> | 2023-05-12 08:36:37 -0400 |
commit | 11fa2729eff8bc585e33086bb2c595ae8a37d14f (patch) | |
tree | bdf7abdaf66e13a7856bd72b1eadb5edd3cda6ab /gcc | |
parent | 560a3e35fe01c499bd5b1e95ddc4c3e958cf5abd (diff) | |
download | gcc-11fa2729eff8bc585e33086bb2c595ae8a37d14f.zip gcc-11fa2729eff8bc585e33086bb2c595ae8a37d14f.tar.gz gcc-11fa2729eff8bc585e33086bb2c595ae8a37d14f.tar.bz2 |
c++: robustify testcase [PR109752]
This rewrites the testcase for PR109752 to make it simpler and more
robust (i.e. no longer dependent on r13-4035-gc41bbfcaf9d6ef).
PR c++/109752
gcc/testsuite/ChangeLog:
* g++.dg/cpp2a/concepts-pr109752.C: Rename to ...
* g++.dg/cpp2a/concepts-complete4.C: ... this. Rewrite.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/g++.dg/cpp2a/concepts-complete4.C | 13 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp2a/concepts-pr109752.C | 26 |
2 files changed, 13 insertions, 26 deletions
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-complete4.C b/gcc/testsuite/g++.dg/cpp2a/concepts-complete4.C new file mode 100644 index 0000000..988b0dd --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp2a/concepts-complete4.C @@ -0,0 +1,13 @@ +// PR c++/109752 +// { dg-do compile { target c++20 } } + +template<class T> +concept C = requires { sizeof(T); } && T::value; // { dg-error "changed from" } + +struct A; + +static_assert(!C<A>); + +struct A { static constexpr bool value = false; }; + +static_assert(C<A>); // { dg-error "assert" } diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-pr109752.C b/gcc/testsuite/g++.dg/cpp2a/concepts-pr109752.C deleted file mode 100644 index d54ce29..0000000 --- a/gcc/testsuite/g++.dg/cpp2a/concepts-pr109752.C +++ /dev/null @@ -1,26 +0,0 @@ -// PR c++/109752 -// { dg-do compile { target c++20 } } - -template <typename _Tp, typename... _Args> - inline constexpr bool is_constructible_v = __is_constructible(_Tp, _Args...); - template<typename _Tp, typename _Up> - concept __weakly_eq_cmp_with - = requires(_Tp __t, _Up __u) { { __u != __t } ; // { dg-error "changed from" } - }; - template<typename _Tp> - concept regular = is_constructible_v<_Tp> && __weakly_eq_cmp_with<_Tp, _Tp>; - template<typename _Iter> concept incrementable = true -&& regular<_Iter> -&& requires(_Iter __i) { { __i++ } ;} -; -template<typename D> -struct iterator_interface -{ - friend constexpr bool operator>=(D lhs, D rhs) requires __weakly_eq_cmp_with<D, D> { return true; } -}; -template<typename T> -struct iterator : iterator_interface<iterator<T>> -{ - bool operator==(iterator) const; -}; -static_assert(incrementable<iterator<int>>); // { dg-error "assert" } |