// { dg-do compile { target c++17 } } // { dg-options "-fconcepts" } template concept C1 = sizeof(T) == 0; template concept C2 = __is_same_as(T, U); template concept D1 = requires (T t) { { t } -> C1; }; template concept D2 = requires (T t) { { t } -> C2; }; void f1(auto D1) { } // OK: D1 is declared as a parameter void f2(auto D2) { } // OK: D2 is declared as a parameter int main() { f1(0); f2(0); }