struct A { }; template struct S{ S(const A &); }; S(const A&) -> S; typedef decltype(S(A())) Type0;