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