Instead, when performing class template argument deduction ([over.match.class.deduct]),
all reachable deduction guides declared for the class template are considered.
[Example 1: 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]
A deduction-guide
shall inhabit the scope
to which the corresponding class template belongs
and, for a member class template, have the same access.
Two deduction guide declarations
for the same class template
shall not have equivalent parameter-declaration-clauses
if either is reachable from the other.