std::pointer_traits::pointer_to(3)

NAME
std::pointer_traits::pointer_to - std::pointer_traits::pointer_to

Synopsis
   Defined in header
   <memory>
   static pointer (since C++11)
   pointer_to( (1) (member of pointer_traits<Ptr>
   element_type& r ); specialization)
   static pointer (since C++11)
   pointer_to( (until C++20)
   element_type& r ) (member of
   noexcept; pointer_traits<T*>
                      (2) specialization)
   static constexpr (since C++20)
   pointer (member of
   pointer_to( pointer_traits<T*>
   element_type& r ) specialization)
   noexcept;
   Constructs a dereferenceable pointer or pointer-like object ("fancy pointer") to its
   argument.
   1) The version of this function in the non-specialized std::pointer_traits template
   simply calls Ptr::pointer_to(r), and if Ptr does not provide a static member
   function pointer_to, instantiation of this function is a compile-time error.
   2) The version of this function in the specialization of std::pointer_traits for
   pointer types returns std::addressof(r).

Parameters
   r - reference to an object of type element_type&, except if element_type is void, in
       which case the type of r is unspecified

Return value
   A dereferenceable pointer to r, of the type pointer_traits<>::pointer.

Exceptions
   1) Unspecified (typically same as Ptr::pointer_to).

Notes
   The Boost.Intrusive library version of this function returns
   pointer(std::addressof(r)) if Ptr::pointer_to does not exist.

See also
   addressof obtains actual address of an object, even if the &
   (C++11) operator is overloaded
                        (function template)
   address obtains the address of an object, even if operator& is
   (until C++20) overloaded
                        (public member function of std::allocator<T>)
   to_address obtains a raw pointer from a fancy pointer (inverse of
   [static] (C++20)(optional) pointer_to)
                        (public static member function)
   to_address obtains a raw pointer from a pointer-like type
   (C++20) (function template)