Alias template:
Ptr::rebind<U> if
the
qualified-id Ptr::rebind<U> is valid and denotes a
type (
[temp.deduct]); otherwise,
SomePointer<U, Args> if
Ptr is a class template instantiation of the form
SomePointer<T, Args>,
where
Args is zero or more type arguments; otherwise, the instantiation of
rebind is ill-formed
.