blob: 84c226918f54bd9d1cecf212eba6b13820984ab4 [file] [log] [blame]
// PR c++/103105
// { dg-do compile { target c++20 } }
template<class...> struct list;
template<bool> struct A;
template<class T, class... Ts>
using wrap = A<1 != (0 + ... + requires { T() = Ts(); })>;
template<class... Ts> using type = list<wrap<Ts, Ts...>...>;
using ty0 = type<>;
using ty0 = list<>;
using ty1 = type<int>;
using ty1 = list<A<true>>;
using ty2 = type<int, int>;
using ty2 = list<A<true>, A<true>>;
using ty3 = type<int, int, int>;
using ty3 = list<A<true>, A<true>, A<true>>;