std::pointe...::pointer_to(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸŽ€ NAME πŸŽ€

std::pointer_traits::pointer_to β€” yes bestie, the name and the thing are both std::pointer_traits::pointer_to. This is the std::pointe...::pointer_to(3) page from the C++ Standard Libary, and it's literally all about constructing a dereferenceable pointer or pointer-like object. 🫢

✨ Synopsis ✨

Defined in header <memory>

static pointer pointer_to( element_type& r );        (1) (since C++11) (member of pointer_traits<Ptr> specialization)

static pointer pointer_to( element_type& r ) noexcept;  (2) (since C++11) (until C++20) (member of pointer_traits<T*> specialization)

static constexpr pointer pointer_to( element_type& r ) noexcept;  (2) (since C++20) (member of pointer_traits<T*> specialization)

okay so the whole vibe: it constructs a dereferenceable pointer or pointer-like object ("fancy pointer") to its argument. That's the main character energy of this page. πŸ’…

Version (1) is the one in the non-specialized std::pointer_traits template. It 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. Not me getting rejected at compile time πŸ˜­πŸ’€

Version (2) is the one in the specialization of std::pointer_traits for pointer types. It returns std::addressof(r). Slay. ✨

🌸 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. Iconic. πŸ’–

πŸ“ 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 (C++11) β€” obtains actual address of an object, even if the & operator is overloaded (function template).
  • address (until C++20) β€” obtains the address of an object, even if operator& is overloaded (public member function of std::allocator<T>).
  • to_address [static] (C++20)(optional) β€” obtains a raw pointer from a fancy pointer (inverse of pointer_to) (public static member function).
  • to_address (C++20) β€” obtains a raw pointer from a pointer-like type (function template).

okay that's the page, bestie! source/version + date sign-off: http://cppreference.com, dated 2024.06.10, and the footer is std::pointe...::pointer_to(3). byeee πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from