Instead, when performing class template argument deduction ([over.match.class.deduct]),
any deduction guides declared for the class template are considered.
template<class T, class D =int>struct S {
T data;
};
template<class U>
S(U)-> S<typename U::type>;
struct A {using type =short;
operator type();
};
S x{A()}; // x is of type S<short, int>