// { dg-do compile { target c++17 } } // { dg-options "-fconcepts" } template concept Type = true; template concept Same = __is_same_as(T, U); template concept C1 = true; template concept C2 = true; template concept C3 = __is_same_as(T, int) && __is_same_as(U, double); template T> struct S1 { }; template U> struct S2 { }; template Q> void f(Q q) { } template B> void g(A a, B b) { } template A> void h0(A* a) { } template A> void h1(A* a) { } template A> void h2(A* a) { } template A> void h3(A* a) { } int main() { S1 s1; S2 s2; f(0); g(0, 1); h0((int*)0); h1((int*)0); // h2((int*)0); h3((int*)0); }