| // { dg-do compile { target c++17_only } } | |
| // { dg-options "-fconcepts" } | |
| template<typename T> | |
| concept bool C1 = sizeof(T) == 0; | |
| template<typename T, typename U> | |
| concept bool C2 = __is_same_as(T, U); | |
| template<typename T> | |
| concept bool D1 = requires (T t) { { t } -> C1; }; | |
| template<typename T> | |
| concept bool D2 = requires (T t) { { t } -> C2<void>; }; | |
| 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); | |
| } |