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
.