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