|
| | 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.