20 General utilities library [utilities]

20.10 Memory [memory]

20.10.3 Pointer traits [pointer.traits]

20.10.3.1 Member types [pointer.traits.types]

using element_type = see below;
Type: Ptrโ€‹::โ€‹element_ยญtype if the qualified-id Ptrโ€‹::โ€‹element_ยญtype is valid and denotes a type ([temp.deduct]); otherwise, T if Ptr is a class template instantiation of the form SomePointer<T, Args>, where Args is zero or more type arguments; otherwise, the specialization is ill-formed.
using difference_type = see below;
Type: Ptrโ€‹::โ€‹difference_ยญtype if the qualified-id Ptrโ€‹::โ€‹difference_ยญtype is valid and denotes a type ([temp.deduct]); otherwise, ptrdiff_ยญt.
template<class U> using rebind = see below;
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.