testsuite: update mangling
[official-gcc.git] / gcc / testsuite / g++.dg / cpp2a / concepts-p2113b.C
blob18c4098d47330ce3c7fea6fc72db2f737dd1ef72
1 // testcase from P2113
2 // { dg-do compile { target c++20 } }
4 template <typename> constexpr bool True = true;
5 template <typename T> concept C = True<T>;
7 void f(C auto &, auto &) = delete;
8 template <C Q> void f(Q &, C auto &);
10 void g(struct A *ap, struct B *bp) {
11   f(*ap, *bp);  // OK: Can use different methods to produce template parameters
14 template <typename T, typename U> struct X {};
16 template <typename T1, C U1, typename V1>
17 bool operator==(X<T1, U1>, V1) = delete;
19 // In P2113 this candidate is reversed.
20 template <C T2, C U2, C V2>
21 bool operator==(X<T2, U2>, V2);
23 void h() {
24   X<void *, int>{} == 0; // OK