|
| cycle_member_ptr ([[maybe_unused]] unowned_cycle_t unowned_tag) noexcept |
| Create an unowned member pointer, representing a nullptr. More...
|
|
| cycle_member_ptr (unowned_cycle_t unowned_tag, [[maybe_unused]] std::nullptr_t nil) noexcept |
| Create an unowned member pointer, representing a nullptr. More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
| cycle_member_ptr ([[maybe_unused]] unowned_cycle_t unowned_tag, const cycle_member_ptr< U > &ptr) |
| Create an unowned member pointer, pointing at ptr . More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
| cycle_member_ptr (unowned_cycle_t unowned_tag, cycle_member_ptr< U > &&ptr) |
| Create an unowned member pointer, pointing at ptr . More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
| cycle_member_ptr ([[maybe_unused]] unowned_cycle_t unowned_tag, const cycle_gptr< U > &ptr) |
| Create an unowned member pointer, pointing at ptr . More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
| cycle_member_ptr ([[maybe_unused]] unowned_cycle_t unowned_tag, cycle_gptr< U > &&ptr) |
| Create an unowned member pointer, pointing at ptr . More...
|
|
template<typename U > |
| cycle_member_ptr ([[maybe_unused]] unowned_cycle_t unowned_tag, const cycle_member_ptr< U > &ptr, element_type *target) |
| Aliasing constructor for unowned member pointer. More...
|
|
template<typename U > |
| cycle_member_ptr ([[maybe_unused]] unowned_cycle_t unowned_tag, const cycle_gptr< U > &ptr, element_type *target) |
| Aliasing constructor for unowned member pointer. More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
| cycle_member_ptr (unowned_cycle_t unowned_tag, const cycle_weak_ptr< U > &ptr) |
| Create an unowned member pointer, pointing at ptr . More...
|
|
| cycle_member_ptr (cycle_base &owner) noexcept |
| Constructor with explicitly specified ownership. More...
|
|
| cycle_member_ptr (cycle_base &owner, [[maybe_unused]] std::nullptr_t nil) noexcept |
| Constructor with explicitly specified ownership. More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
| cycle_member_ptr (cycle_base &owner, const cycle_member_ptr< U > &ptr) |
| Constructor with explicitly specified ownership. More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
| cycle_member_ptr (cycle_base &owner, cycle_member_ptr< U > &&ptr) |
| Constructor with explicitly specified ownership. More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
| cycle_member_ptr (cycle_base &owner, const cycle_gptr< U > &ptr) |
| Constructor with explicitly specified ownership. More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
| cycle_member_ptr (cycle_base &owner, cycle_gptr< U > &&ptr) |
| Constructor with explicitly specified ownership. More...
|
|
template<typename U > |
| cycle_member_ptr (cycle_base &owner, const cycle_member_ptr< U > &ptr, element_type *target) |
| Aliasing constructor with explicitly specified ownership. More...
|
|
template<typename U > |
| cycle_member_ptr (cycle_base &owner, const cycle_gptr< U > &ptr, element_type *target) |
| Aliasing constructor with explicitly specified ownership. More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
| cycle_member_ptr (cycle_base &owner, const cycle_weak_ptr< U > &ptr) |
| Constructor with explicitly specified ownership. More...
|
|
| cycle_member_ptr () |
| Constructor with automatic ownership detection. More...
|
|
| cycle_member_ptr ([[maybe_unused]] std::nullptr_t nil) |
| Constructor with automatic ownership detection. More...
|
|
| cycle_member_ptr (const cycle_member_ptr &ptr) |
| Constructor with automatic ownership detection. More...
|
|
| cycle_member_ptr (cycle_member_ptr &&ptr) |
| Constructor with automatic ownership detection. More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
| cycle_member_ptr (const cycle_member_ptr< U > &ptr) |
| Constructor with automatic ownership detection. More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
| cycle_member_ptr (cycle_member_ptr< U > &&ptr) |
| Constructor with automatic ownership detection. More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
| cycle_member_ptr (const cycle_gptr< U > &ptr) |
| Constructor with automatic ownership detection. More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
| cycle_member_ptr (cycle_gptr< U > &&ptr) |
| Constructor with automatic ownership detection. More...
|
|
template<typename U > |
| cycle_member_ptr (const cycle_member_ptr< U > &ptr, element_type *target) |
| Aliasing constructor with automatic ownership detection. More...
|
|
template<typename U > |
| cycle_member_ptr (const cycle_gptr< U > &ptr, element_type *target) |
| Aliasing constructor with automatic ownership detection. More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
| cycle_member_ptr (const cycle_weak_ptr< U > &ptr) |
| Constructor with automatic ownership detection. More...
|
|
auto | operator= ([[maybe_unused]] std::nullptr_t nil) -> cycle_member_ptr & |
| Assignment operator. More...
|
|
auto | operator= (const cycle_member_ptr &other) -> cycle_member_ptr & |
| Copy assignment operator. More...
|
|
auto | operator= (cycle_member_ptr &&other) -> cycle_member_ptr & |
| Move assignment operator. More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
auto | operator= (const cycle_member_ptr< U > &other) -> cycle_member_ptr & |
| Copy assignment operator. More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
auto | operator= (cycle_member_ptr< U > &&other) -> cycle_member_ptr & |
| Move assignment operator. More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
auto | operator= (const cycle_gptr< U > &other) -> cycle_member_ptr & |
| Copy assignment operator. More...
|
|
template<typename U , typename = std::enable_if_t<std::is_convertible_v<U*, T*>>> |
auto | operator= (cycle_gptr< U > &&other) -> cycle_member_ptr & |
| Move assignment operator. More...
|
|
auto | reset () -> void |
| Clear this pointer. More...
|
|
auto | swap (cycle_member_ptr &other) -> void |
| Swap with other pointer. More...
|
|
auto | swap (cycle_gptr< T > &other) -> void |
| Swap with other pointer. More...
|
|
auto | get () const -> T * |
| Returns the raw pointer of this. More...
|
|
template<bool Enable = !std::is_void_v<T>> |
auto | operator * () const -> std::enable_if_t< Enable, T > & |
| Dereference operation. More...
|
|
template<bool Enable = !std::is_void_v<T>> |
auto | operator-> () const -> std::enable_if_t< Enable, T > * |
| Indirection operation. More...
|
|
| operator bool () const |
| Test if this pointer points holds a non-nullptr value. More...
|
|
template<typename U > |
auto | owner_before (const cycle_weak_ptr< U > &other) const noexcept -> bool |
| Ownership ordering.
|
|
template<typename U > |
auto | owner_before (const cycle_gptr< U > &other) const noexcept -> bool |
| Ownership ordering.
|
|
template<typename U > |
auto | owner_before (const cycle_member_ptr< U > &other) const noexcept -> bool |
| Ownership ordering.
|
|
|
(Note that these are not member functions.)
|
template<typename T , typename U > |
auto | operator== (const cycle_member_ptr< T > &x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Equality comparison. More...
|
|
template<typename T > |
auto | operator== (const cycle_member_ptr< T > &x, [[maybe_unused]] std::nullptr_t y) noexcept -> bool |
| Equality comparison. More...
|
|
template<typename U > |
auto | operator== ([[maybe_unused]] std::nullptr_t x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Equality comparison. More...
|
|
template<typename T , typename U > |
auto | operator!= (const cycle_member_ptr< T > &x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Inequality comparison. More...
|
|
template<typename T > |
auto | operator!= (const cycle_member_ptr< T > &x, [[maybe_unused]] std::nullptr_t y) noexcept -> bool |
| Inequality comparison. More...
|
|
template<typename U > |
auto | operator!= ([[maybe_unused]] std::nullptr_t x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Inequality comparison. More...
|
|
template<typename T , typename U > |
auto | operator< (const cycle_member_ptr< T > &x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Less comparison. More...
|
|
template<typename T > |
auto | operator< (const cycle_member_ptr< T > &x, [[maybe_unused]] std::nullptr_t y) noexcept -> bool |
| Less comparison. More...
|
|
template<typename U > |
auto | operator< ([[maybe_unused]] std::nullptr_t x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Less comparison. More...
|
|
template<typename T , typename U > |
auto | operator> (const cycle_member_ptr< T > &x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Greater comparison. More...
|
|
template<typename T > |
auto | operator> (const cycle_member_ptr< T > &x, [[maybe_unused]] std::nullptr_t y) noexcept -> bool |
| Greater comparison. More...
|
|
template<typename U > |
auto | operator> ([[maybe_unused]] std::nullptr_t x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Greater comparison. More...
|
|
template<typename T , typename U > |
auto | operator<= (const cycle_member_ptr< T > &x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Less or equal comparison. More...
|
|
template<typename T > |
auto | operator<= (const cycle_member_ptr< T > &x, [[maybe_unused]] std::nullptr_t y) noexcept -> bool |
| Less or equal comparison. More...
|
|
template<typename U > |
auto | operator<= ([[maybe_unused]] std::nullptr_t x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Less or equal comparison. More...
|
|
template<typename T , typename U > |
auto | operator>= (const cycle_member_ptr< T > &x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Greater or equal comparison. More...
|
|
template<typename T > |
auto | operator>= (const cycle_member_ptr< T > &x, [[maybe_unused]] std::nullptr_t y) noexcept -> bool |
| Greater or equal comparison. More...
|
|
template<typename U > |
auto | operator>= ([[maybe_unused]] std::nullptr_t x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Greater or equal comparison. More...
|
|
template<typename T > |
auto | swap (cycle_member_ptr< T > &x, cycle_member_ptr< T > &y) noexcept -> void |
| Swap two pointers. More...
|
|
template<typename T > |
auto | swap (cycle_gptr< T > &x, cycle_member_ptr< T > &y) noexcept -> void |
| Swap two pointers.
|
|
template<typename T , typename U > |
auto | operator== (const cycle_gptr< T > &x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Equality comparison.
|
|
template<typename T , typename U > |
auto | operator== (const cycle_member_ptr< T > &x, const cycle_gptr< U > &y) noexcept -> bool |
| Equality comparison.
|
|
template<typename T , typename U > |
auto | operator!= (const cycle_gptr< T > &x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Inequality comparison.
|
|
template<typename T , typename U > |
auto | operator!= (const cycle_member_ptr< T > &x, const cycle_gptr< U > &y) noexcept -> bool |
| Inequality comparison.
|
|
template<typename T , typename U > |
auto | operator< (const cycle_gptr< T > &x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Less comparison.
|
|
template<typename T , typename U > |
auto | operator< (const cycle_member_ptr< T > &x, const cycle_gptr< U > &y) noexcept -> bool |
| Less comparison.
|
|
template<typename T , typename U > |
auto | operator> (const cycle_gptr< T > &x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Greater comparison.
|
|
template<typename T , typename U > |
auto | operator> (const cycle_member_ptr< T > &x, const cycle_gptr< U > &y) noexcept -> bool |
| Greater comparison.
|
|
template<typename T , typename U > |
auto | operator<= (const cycle_gptr< T > &x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Less or equal comparison.
|
|
template<typename T , typename U > |
auto | operator<= (const cycle_member_ptr< T > &x, const cycle_gptr< U > &y) noexcept -> bool |
| Less or equal comparison.
|
|
template<typename T , typename U > |
auto | operator>= (const cycle_gptr< T > &x, const cycle_member_ptr< U > &y) noexcept -> bool |
| Greater or equal comparison.
|
|
template<typename T , typename U > |
auto | operator>= (const cycle_member_ptr< T > &x, const cycle_gptr< U > &y) noexcept -> bool |
| Greater or equal comparison.
|
|
template<typename Char , typename Traits , typename T > |
auto | operator<< (std::basic_ostream< Char, Traits > &out, const cycle_member_ptr< T > &ptr) -> std::basic_ostream< Char, Traits > & |
| Write pointer to output stream. More...
|
|
template<typename T , typename U = cycle_ptr::cycle_gptr<T>> |
auto | exchange (cycle_ptr::cycle_member_ptr< T > &x, U &&y) |
| Specialize std::exchange. More...
|
|
template<typename T , typename U > |
auto | static_pointer_cast (const cycle_ptr::cycle_member_ptr< U > &r) -> cycle_ptr::cycle_gptr< T > |
| Perform static cast on pointer. More...
|
|
template<typename T , typename U > |
auto | dynamic_pointer_cast (const cycle_ptr::cycle_member_ptr< U > &r) -> cycle_ptr::cycle_gptr< T > |
| Perform dynamic cast on pointer. More...
|
|
template<typename T , typename U > |
auto | const_pointer_cast (const cycle_ptr::cycle_member_ptr< U > &r) -> cycle_ptr::cycle_gptr< T > |
| Perform const cast on pointer. More...
|
|
template<typename T , typename U > |
auto | reinterpret_pointer_cast (const cycle_ptr::cycle_member_ptr< U > &r) -> cycle_ptr::cycle_gptr< T > |
| Perform reinterpret cast on pointer. More...
|
|
template<typename T>
class cycle_ptr::cycle_member_ptr< T >
Pointer between objects participating in the cycle_ptr graph.
This smart pointer models the relationship between an origin object and a target object.
It is intended for use in member variables, as well as collections that are owned by a member variable.