deduction-guide: explicit-specifier template-name ( parameter-declaration-clause ) -> simple-template-id ;
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>— end example