2 // { dg-do compile { target c++20 } }
4 template<class...> struct list;
6 template<bool> struct A;
8 template<class T, class... Ts>
9 using wrap = A<1 != (0 + ... + requires { T() = Ts(); })>;
11 template<class... Ts> using type = list<wrap<Ts, Ts...>...>;
16 using ty1 = type<int>;
17 using ty1 = list<A<true>>;
19 using ty2 = type<int, int>;
20 using ty2 = list<A<true>, A<true>>;
22 using ty3 = type<int, int, int>;
23 using ty3 = list<A<true>, A<true>, A<true>>;