cycle_ptr
Public Types | Public Member Functions | Related Functions | List of all members
cycle_ptr::detail::intrusive_ptr< T > Class Template Reference

Intrusive pointer. More...

#include <intrusive_ptr.h>

Public Types

using element_type = T
 

Public Member Functions

constexpr intrusive_ptr ([[maybe_unused]] std::nullptr_t nil) noexcept
 
 intrusive_ptr (T *p, bool acquire) noexcept
 
 intrusive_ptr (const intrusive_ptr &x) noexcept
 
 intrusive_ptr (intrusive_ptr &&x) noexcept
 
auto operator= (const intrusive_ptr &x) noexcept -> intrusive_ptr &
 
auto operator= (intrusive_ptr &&x) noexcept -> intrusive_ptr &
 
auto reset () noexcept -> void
 
auto swap (intrusive_ptr &other) noexcept -> void
 
auto detach () noexcept -> T *
 
auto get () const noexcept -> T *
 
auto operator * () const noexcept -> T &
 
auto operator-> () const noexcept -> T *
 
 operator bool () const noexcept
 

Related Functions

(Note that these are not member functions.)

template<typename T >
auto swap (intrusive_ptr< T > &x, intrusive_ptr< T > &y) noexcept -> void
 Swap operation. More...
 
template<typename T , typename U >
auto operator== (const intrusive_ptr< T > &x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T , typename U >
auto operator== (T *x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T , typename U >
auto operator== (const intrusive_ptr< T > &x, U *y) noexcept -> bool
 Comparison. More...
 
template<typename U >
auto operator== ([[maybe_unused]] std::nullptr_t x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T >
auto operator== (const intrusive_ptr< T > &x, [[maybe_unused]] std::nullptr_t y) noexcept -> bool
 Comparison. More...
 
template<typename T , typename U >
auto operator!= (const intrusive_ptr< T > &x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T , typename U >
auto operator!= (T *x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T , typename U >
auto operator!= (const intrusive_ptr< T > &x, U *y) noexcept -> bool
 Comparison. More...
 
template<typename U >
auto operator!= ([[maybe_unused]] std::nullptr_t x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T >
auto operator!= (const intrusive_ptr< T > &x, [[maybe_unused]] std::nullptr_t y) noexcept -> bool
 Comparison. More...
 
template<typename T , typename U >
auto operator< (const intrusive_ptr< T > &x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T , typename U >
auto operator< (T *x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T , typename U >
auto operator< (const intrusive_ptr< T > &x, U *y) noexcept -> bool
 Comparison. More...
 
template<typename U >
auto operator< ([[maybe_unused]] std::nullptr_t x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T >
auto operator< (const intrusive_ptr< T > &x, [[maybe_unused]] std::nullptr_t y) noexcept -> bool
 Comparison. More...
 
template<typename T , typename U >
auto operator> (const intrusive_ptr< T > &x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T , typename U >
auto operator> (T *x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T , typename U >
auto operator> (const intrusive_ptr< T > &x, U *y) noexcept -> bool
 Comparison. More...
 
template<typename U >
auto operator> ([[maybe_unused]] std::nullptr_t x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T >
auto operator> (const intrusive_ptr< T > &x, [[maybe_unused]] std::nullptr_t y) noexcept -> bool
 Comparison. More...
 
template<typename T , typename U >
auto operator<= (const intrusive_ptr< T > &x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T , typename U >
auto operator<= (T *x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T , typename U >
auto operator<= (const intrusive_ptr< T > &x, U *y) noexcept -> bool
 Comparison. More...
 
template<typename U >
auto operator<= ([[maybe_unused]] std::nullptr_t x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T >
auto operator<= (const intrusive_ptr< T > &x, [[maybe_unused]] std::nullptr_t y) noexcept -> bool
 Comparison. More...
 
template<typename T , typename U >
auto operator>= (const intrusive_ptr< T > &x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T , typename U >
auto operator>= (T *x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T , typename U >
auto operator>= (const intrusive_ptr< T > &x, U *y) noexcept -> bool
 Comparison. More...
 
template<typename U >
auto operator>= ([[maybe_unused]] std::nullptr_t x, const intrusive_ptr< U > &y) noexcept -> bool
 Comparison. More...
 
template<typename T >
auto operator>= (const intrusive_ptr< T > &x, [[maybe_unused]] std::nullptr_t y) noexcept -> bool
 Comparison. More...
 
template<typename Char , typename Traits , typename T >
auto operator<< (std::basic_ostream< Char, Traits > &out, const intrusive_ptr< T > &ptr) -> std::basic_ostream< Char, Traits > &
 Write pointer to output stream. More...
 

Detailed Description

template<typename T>
class cycle_ptr::detail::intrusive_ptr< T >

Intrusive pointer.

Like boost::intrusive_ptr, except with move semantics and constexpr initialization.

Template Parameters
TThe pointee type.

Friends And Related Function Documentation

◆ operator!=() [1/5]

template<typename T , typename U >
auto operator!= ( const intrusive_ptr< T > &  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator!=() [2/5]

template<typename T , typename U >
auto operator!= ( T *  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator!=() [3/5]

template<typename T , typename U >
auto operator!= ( const intrusive_ptr< T > &  x,
U *  y 
) -> bool
related

Comparison.

◆ operator!=() [4/5]

template<typename U >
auto operator!= ( [[maybe_unused] ] std::nullptr_t  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator!=() [5/5]

template<typename T >
auto operator!= ( const intrusive_ptr< T > &  x,
[[maybe_unused] ] std::nullptr_t  y 
) -> bool
related

Comparison.

◆ operator<() [1/5]

template<typename T , typename U >
auto operator< ( const intrusive_ptr< T > &  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator<() [2/5]

template<typename T , typename U >
auto operator< ( T *  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator<() [3/5]

template<typename T , typename U >
auto operator< ( const intrusive_ptr< T > &  x,
U *  y 
) -> bool
related

Comparison.

◆ operator<() [4/5]

template<typename U >
auto operator< ( [[maybe_unused] ] std::nullptr_t  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator<() [5/5]

template<typename T >
auto operator< ( const intrusive_ptr< T > &  x,
[[maybe_unused] ] std::nullptr_t  y 
) -> bool
related

Comparison.

◆ operator<<()

template<typename Char , typename Traits , typename T >
auto operator<< ( std::basic_ostream< Char, Traits > &  out,
const intrusive_ptr< T > &  ptr 
) -> std::basic_ostream<Char, Traits>&
related

Write pointer to output stream.

◆ operator<=() [1/5]

template<typename T , typename U >
auto operator<= ( const intrusive_ptr< T > &  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator<=() [2/5]

template<typename T , typename U >
auto operator<= ( T *  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator<=() [3/5]

template<typename T , typename U >
auto operator<= ( const intrusive_ptr< T > &  x,
U *  y 
) -> bool
related

Comparison.

◆ operator<=() [4/5]

template<typename U >
auto operator<= ( [[maybe_unused] ] std::nullptr_t  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator<=() [5/5]

template<typename T >
auto operator<= ( const intrusive_ptr< T > &  x,
[[maybe_unused] ] std::nullptr_t  y 
) -> bool
related

Comparison.

◆ operator==() [1/5]

template<typename T , typename U >
auto operator== ( const intrusive_ptr< T > &  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator==() [2/5]

template<typename T , typename U >
auto operator== ( T *  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator==() [3/5]

template<typename T , typename U >
auto operator== ( const intrusive_ptr< T > &  x,
U *  y 
) -> bool
related

Comparison.

◆ operator==() [4/5]

template<typename U >
auto operator== ( [[maybe_unused] ] std::nullptr_t  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator==() [5/5]

template<typename T >
auto operator== ( const intrusive_ptr< T > &  x,
[[maybe_unused] ] std::nullptr_t  y 
) -> bool
related

Comparison.

◆ operator>() [1/5]

template<typename T , typename U >
auto operator> ( const intrusive_ptr< T > &  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator>() [2/5]

template<typename T , typename U >
auto operator> ( T *  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator>() [3/5]

template<typename T , typename U >
auto operator> ( const intrusive_ptr< T > &  x,
U *  y 
) -> bool
related

Comparison.

◆ operator>() [4/5]

template<typename U >
auto operator> ( [[maybe_unused] ] std::nullptr_t  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator>() [5/5]

template<typename T >
auto operator> ( const intrusive_ptr< T > &  x,
[[maybe_unused] ] std::nullptr_t  y 
) -> bool
related

Comparison.

◆ operator>=() [1/5]

template<typename T , typename U >
auto operator>= ( const intrusive_ptr< T > &  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator>=() [2/5]

template<typename T , typename U >
auto operator>= ( T *  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator>=() [3/5]

template<typename T , typename U >
auto operator>= ( const intrusive_ptr< T > &  x,
U *  y 
) -> bool
related

Comparison.

◆ operator>=() [4/5]

template<typename U >
auto operator>= ( [[maybe_unused] ] std::nullptr_t  x,
const intrusive_ptr< U > &  y 
) -> bool
related

Comparison.

◆ operator>=() [5/5]

template<typename T >
auto operator>= ( const intrusive_ptr< T > &  x,
[[maybe_unused] ] std::nullptr_t  y 
) -> bool
related

Comparison.

◆ swap()

template<typename T >
auto swap ( intrusive_ptr< T > &  x,
intrusive_ptr< T > &  y 
) -> void
related

Swap operation.


The documentation for this class was generated from the following file: