LibCXX 0.26.1
List of all members | Public Types | Public Member Functions | Static Public Member Functions | Friends
x::const_ptr< objClass, baseClass > Class Template Reference

A pointer to a reference-counted constant object.. More...

#include <ptrfwd.H>

Public Types

typedef baseClass base
 Provide for this pointer's base class.
 
typedef objClass obj_type
 Define this pointer's object class.
 
typedef std_refptr_traits< objClass, baseClass, const_ptr< objClass, baseClass > > traits_t
 Our traits.
 
- Public Types inherited from x::ptrImpl< objClass >
typedef objClass obj_type
 Define this reference's base type.
 

Public Member Functions

 const_ptr () noexcept LIBCXX_INLINE
 
template<typename baseClass2 >
 const_ptr (const const_ref< objClass, baseClass2 > &o) noexcept
 Copy constructor.
 
 const_ptr (const objClass *pArg) noexcept LIBCXX_INLINE
 
 const_ptr (const ptrImpl< objClass > &o) noexcept LIBCXX_INLINE
 Copy constructor.
 
template<typename objClass2 >
 const_ptr (const ptrImpl< objClass2 > &o)
 
template<typename baseClass2 >
 const_ptr (const ref< objClass, baseClass2 > &o) noexcept
 Copy constructor called by const_ref.
 
template<typename baseClass2 >
 const_ptr (const_ptr< objClass, baseClass2 > &&o) noexcept
 
template<typename baseClass2 >
 const_ptr (const_ref< objClass, baseClass2 > &&o) noexcept
 Move constructor.
 
template<typename baseClass2 >
 const_ptr (ptr< objClass, baseClass2 > &&o) noexcept
 
template<typename baseClass2 >
 const_ptr (ref< objClass, baseClass2 > &&o) noexcept
 Move constructor called by const_ref.
 
 ~const_ptr () LIBCXX_INLINE
 The default destructor.
 
const objClass & operator* () const LIBCXX_INLINE
 Implement the "*" operator for pointer references.
 
const objClass * operator-> () const LIBCXX_INLINE
 Implement the "->" operator for pointer references.
 
template<typename T >
requires is_derived_from_ref_or_ptr<T>
std::strong_ordering operator<=> (const T &o) const noexcept LIBCXX_INLINE
 Comparison operator.
 
template<typename objClass2 >
const_ptr< objClass, baseClass > & operator= (const objClass2 *o)
 
const_ptr< objClass, baseClass > & operator= (const ptrImpl< objClass > &o) noexcept
 The assignment operator.
 
template<typename objClass2 >
const_ptr< objClass, baseClass > & operator= (const ptrImpl< objClass2 > &o)
 Convert from a pointer reference to a different type.
 
const_ptr< objClass, baseClass > & operator= (ptrImpl< objClass > &&o) noexcept LIBCXX_INLINE
 The move operator.
 
template<typename T >
requires is_derived_from_ref_or_ptr<T>
bool operator== (const T &o) const noexcept LIBCXX_INLINE
 
- Public Member Functions inherited from x::ptrImpl< objClass >
template<typename baseClass >
requires derived_from_obj<objClass>
 ptrImpl (const const_ref< objClass, baseClass > &o) noexcept
 
 ptrImpl (const ptrImpl< objClass > &o) noexcept LIBCXX_INLINE
 The default copy constructor.
 
template<typename baseClass >
requires derived_from_obj<objClass>
 ptrImpl (const ref< objClass, baseClass > &o) noexcept
 
template<typename baseClass >
requires derived_from_obj<objClass>
 ptrImpl (const_ptr< objClass, baseClass > &&o) noexcept
 Move constructor.
 
template<typename baseClass >
requires derived_from_obj<objClass>
 ptrImpl (const_ref< objClass, baseClass > &&o) noexcept
 
template<typename impl_objClass = objClass>
requires derived_from_obj<impl_objClass>
 ptrImpl (objClass *pArg) noexcept LIBCXX_INLINE
 Default constructor.
 
template<typename baseClass >
requires derived_from_obj<objClass>
 ptrImpl (ptr< objClass, baseClass > &&o) noexcept
 Move constructor.
 
 ptrImpl (ptrImpl< objClass > &&o) noexcept LIBCXX_INLINE
 Move constructor.
 
template<typename baseClass >
requires derived_from_obj<objClass>
 ptrImpl (ref< objClass, baseClass > &&o) noexcept
 
 ~ptrImpl () LIBCXX_INLINE
 Default destructor.
 
bool null () const noexcept LIBCXX_INLINE
 Check if this is an unbound reference.
 
 operator bool () const noexcept
 Make it work in boolean context.
 
bool operator! () const noexcept
 Make it work in boolean context.
 
ptrImpl< objClass > & operator= (const ptrImpl< objClass > &o) noexcept LIBCXX_INLINE
 The default assignment operator.
 
ptrImpl< objClass > & operator= (ptrImpl< objClass > &&o) noexcept LIBCXX_INLINE
 The move operator.
 

Static Public Member Functions

template<typename... Args_t>
static auto create (Args_t &&...args) LIBCXX_INLINE
 Forward create() to the base type.
 

Friends

template<typename objClass2 , typename baseClass2 >
class const_ptr
 

Additional Inherited Members

- Protected Member Functions inherited from x::ptrImpl< objClass >
objClass * getrefP () const noexcept LIBCXX_INLINE
 Return the underlying pointer.
 
void setRef (objClass *newRefP) noexcept LIBCXX_INLINE
 Update reference pointer.
 
void setRef_noconscheck (objClass *newRefP) noexcept LIBCXX_INLINE
 Update reference pointer.
 
- Protected Attributes inherited from x::ptrImpl< objClass >
objClass * refP
 Object that this reference is bound to.
 

Detailed Description

template<typename objClass, typename baseClass>
class x::const_ptr< objClass, baseClass >

A pointer to a reference-counted constant object..

This is a version of ptr that dereferences into a constant object. See ptr for more information. With the sole exception being that dereferencing gives a constant object, const_ptr is identical in all other respects to ptr. This is similar to the relationship between an iterator and a const_iterator in the C++ Standard Template library.

And similar to STL iterators, ptr<objClass> can be converted to const_ptr<objClass>, but not the other way around.

Member Typedef Documentation

◆ base

template<typename objClass , typename baseClass >
typedef baseClass x::const_ptr< objClass, baseClass >::base

Provide for this pointer's base class.

◆ obj_type

template<typename objClass , typename baseClass >
typedef objClass x::const_ptr< objClass, baseClass >::obj_type

Define this pointer's object class.

◆ traits_t

template<typename objClass , typename baseClass >
typedef std_refptr_traits<objClass, baseClass, const_ptr<objClass, baseClass> > x::const_ptr< objClass, baseClass >::traits_t

Our traits.

Constructor & Destructor Documentation

◆ const_ptr() [1/10]

template<typename objClass , typename baseClass >
x::const_ptr< objClass, baseClass >::const_ptr
inlinenoexcept

Initialize a constant reference.

See also
ptr

◆ const_ptr() [2/10]

template<typename objClass , typename baseClass >
x::const_ptr< objClass, baseClass >::const_ptr ( const objClass *  pArg)
inlineexplicitnoexcept

Initialize a constant reference.

See also
ptr

◆ const_ptr() [3/10]

template<typename objClass , typename baseClass >
x::const_ptr< objClass, baseClass >::const_ptr ( const ptrImpl< objClass > &  o)
inlineexplicitnoexcept

Copy constructor.

◆ const_ptr() [4/10]

template<typename objClass , typename baseClass >
template<typename baseClass2 >
x::const_ptr< objClass, baseClass >::const_ptr ( const_ptr< objClass, baseClass2 > &&  o)
inlineexplicitnoexcept

◆ const_ptr() [5/10]

template<typename objClass , typename baseClass >
template<typename baseClass2 >
x::const_ptr< objClass, baseClass >::const_ptr ( ptr< objClass, baseClass2 > &&  o)
inlineexplicitnoexcept

◆ const_ptr() [6/10]

template<typename objClass , typename baseClass >
template<typename baseClass2 >
x::const_ptr< objClass, baseClass >::const_ptr ( const const_ref< objClass, baseClass2 > &  o)
explicitnoexcept

Copy constructor.

◆ const_ptr() [7/10]

template<typename objClass , typename baseClass >
template<typename baseClass2 >
x::const_ptr< objClass, baseClass >::const_ptr ( const_ref< objClass, baseClass2 > &&  o)
explicitnoexcept

Move constructor.

◆ const_ptr() [8/10]

template<typename objClass , typename baseClass >
template<typename baseClass2 >
x::const_ptr< objClass, baseClass >::const_ptr ( const ref< objClass, baseClass2 > &  o)
explicitnoexcept

Copy constructor called by const_ref.

◆ const_ptr() [9/10]

template<typename objClass , typename baseClass >
template<typename baseClass2 >
x::const_ptr< objClass, baseClass >::const_ptr ( ref< objClass, baseClass2 > &&  o)
explicitnoexcept

Move constructor called by const_ref.

◆ ~const_ptr()

template<typename objClass , typename baseClass >
x::const_ptr< objClass, baseClass >::~const_ptr ( )
inlinedefault

The default destructor.

◆ const_ptr() [10/10]

template<typename objClass , typename baseClass >
template<typename objClass2 >
x::const_ptr< objClass, baseClass >::const_ptr ( const ptrImpl< objClass2 > &  o)
inline

Member Function Documentation

◆ create()

template<typename objClass , typename baseClass >
template<typename... Args_t>
auto x::const_ptr< objClass, baseClass >::create ( Args_t &&...  args)
inlinestatic

Forward create() to the base type.

◆ operator*()

template<typename objClass , typename baseClass >
const objClass & x::const_ptr< objClass, baseClass >::operator*
inline

Implement the "*" operator for pointer references.

Dereferencing results in a constant object.

◆ operator->()

template<typename objClass , typename baseClass >
const objClass * x::const_ptr< objClass, baseClass >::operator->
inline

Implement the "->" operator for pointer references.

Dereferencing results in a constant object.

References x::null_ptr_deref().

◆ operator<=>()

template<typename objClass , typename baseClass >
requires is_derived_from_ref_or_ptr<T>
template<typename T >
requires is_derived_from_ref_or_ptr<T>
std::strong_ordering x::const_ptr< objClass, baseClass >::operator<=> ( const T &  o) const
inlinenoexcept

Comparison operator.

std::compare_three_way support total ordering of pointers.

◆ operator=() [1/4]

template<typename objClass , typename baseClass >
template<typename objClass2 >
const_ptr< objClass, baseClass > & x::const_ptr< objClass, baseClass >::operator= ( const objClass2 *  o)

References x::invalid_cast().

◆ operator=() [2/4]

template<typename objClass , typename baseClass >
const_ptr< objClass, baseClass > & x::const_ptr< objClass, baseClass >::operator= ( const ptrImpl< objClass > &  o)
inlinenoexcept

◆ operator=() [3/4]

template<typename objClass , typename baseClass >
template<typename objClass2 >
const_ptr< objClass, baseClass > & x::const_ptr< objClass, baseClass >::operator= ( const ptrImpl< objClass2 > &  o)

Convert from a pointer reference to a different type.

This operator= function allows getting a reference to this object type's superclass or subclass.

References x::invalid_cast(), and x::ptrImpl< objClass >::refP.

◆ operator=() [4/4]

template<typename objClass , typename baseClass >
const_ptr< objClass, baseClass > & x::const_ptr< objClass, baseClass >::operator= ( ptrImpl< objClass > &&  o)
inlinenoexcept

The move operator.

◆ operator==()

template<typename objClass , typename baseClass >
requires is_derived_from_ref_or_ptr<T>
template<typename T >
requires is_derived_from_ref_or_ptr<T>
bool x::const_ptr< objClass, baseClass >::operator== ( const T &  o) const
inlinenoexcept

Friends And Related Symbol Documentation

◆ const_ptr

template<typename objClass , typename baseClass >
template<typename objClass2 , typename baseClass2 >
friend class const_ptr
friend

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