1 // { dg-options "-std=c++1z -fconcepts" }
2
3 template <class T1, class T2> class A { };
4
5 A<int, int> a;
6 A<double, float> a2;
7 A<double, double> a22;
8
9 A<auto, auto> b = a;
10 A<auto, auto> b1 = a2;
11
12 template <class T> concept bool C = __is_same_as (T, int);
13
14 A<C,C> b2 = a;
15 A<C,C> b3 = a2; // { dg-error "" }
16 A<C,C> b32 = a22; // { dg-error "" }
17
C2()18 template <class T> concept bool C2() { return __is_enum (T); }
19
20 enum E1 { };
21 enum E2 { };
22
23 A<E1,E1> a3;
24 A<C2,C2> b4 = a3;
25
26 A<E1,E2> a4;
27 A<C2,C2> b5 = a4; // { dg-error "" }
28