1 // { dg-options "-std=c++17 -fconcepts" } 2 3 // Handle alias templates in type requirements. 4 5 template<typename T1, typename T2> 6 struct BTT { }; 7 8 template<typename T> 9 struct BTT<T,T> { using type = int; }; 10 11 template<typename T1, typename T2> 12 using Alias1 = typename BTT<T1, T2>::type; 13 14 template<typename T1, typename T2> 15 concept bool C() 16 { 17 return requires() { typename Alias1<T1, T2>; }; 18 } 19 20 template<typename T1, typename T2> 21 requires C<T1, T2>() 22 int f(); 23 24 auto i = f<char, int>(); // { dg-error "cannot call function" } 25