// PR c++/104470 // { dg-do compile { target c++20 } } template<typename _Types> class variant { template<typename _Tp> static constexpr int __accepted_index = 0; template<int _Np> using __to_type = int; template<typename _Tp> using __accepted_type = __to_type<__accepted_index<_Tp>>; template<typename _Tp, typename _Tj = __accepted_type<_Tp>> variant(_Tp __t) { } }; template <typename T> struct Foo { T value; }; template <typename T> using V = variant<Foo<T>>; V e = Foo{1}; // { dg-error "" }