The class template
pointer_traits supplies a uniform interface to certain
attributes of pointer-like types
.namespace std {
template<class Ptr> struct pointer_traits {
using pointer = Ptr;
using element_type = see below;
using difference_type = see below;
template<class U> using rebind = see below;
static pointer pointer_to(see below r);
};
template<class T> struct pointer_traits<T*> {
using pointer = T*;
using element_type = T;
using difference_type = ptrdiff_t;
template<class U> using rebind = U*;
static constexpr pointer pointer_to(see below r) noexcept;
};
}