sparrow 0.3.0
|
Smart pointer behaving like a copiable std::unique_ptr. More...
#include <memory.hpp>
Public Types | |
using | self_type = cloning_ptr<T> |
using | pointer = typename internal_pointer::pointer |
using | element_type = typename internal_pointer::element_type |
Public Member Functions | |
constexpr | cloning_ptr () noexcept=default |
constexpr | cloning_ptr (std::nullptr_t) noexcept |
constexpr | cloning_ptr (pointer p) noexcept |
constexpr | ~cloning_ptr ()=default |
constexpr | cloning_ptr (const self_type &rhs) noexcept |
constexpr | cloning_ptr (self_type &&rhs) noexcept=default |
template<clonable U> requires std::convertible_to<U*, T*> | |
constexpr | cloning_ptr (const cloning_ptr< U > &rhs) noexcept |
template<clonable U> requires std::convertible_to<U*, T*> | |
constexpr | cloning_ptr (cloning_ptr< U > &&rhs) noexcept |
constexpr self_type & | operator= (const self_type &) noexcept |
constexpr self_type & | operator= (self_type &&) noexcept=default |
constexpr self_type & | operator= (std::nullptr_t) noexcept |
template<clonable U> requires std::convertible_to<U*, T*> | |
constexpr self_type & | operator= (const cloning_ptr< U > &rhs) noexcept |
template<clonable U> requires std::convertible_to<U*, T*> | |
constexpr self_type & | operator= (cloning_ptr< U > &&rhs) noexcept |
constexpr pointer | release () noexcept |
constexpr void | reset (pointer ptr=pointer()) noexcept |
void | swap (self_type &) noexcept |
constexpr pointer | get () const noexcept |
constexpr | operator bool () const noexcept |
constexpr std::add_lvalue_reference_t< T > | operator* () const noexcept(noexcept(*std::declval< pointer >())) |
constexpr pointer | operator-> () const noexcept |
template<clonable U> requires std::convertible_to<U*, T*> | |
constexpr auto | operator= (const cloning_ptr< U > &rhs) noexcept -> self_type & |
template<clonable U> requires std::convertible_to<U*, T*> | |
constexpr auto | operator= (cloning_ptr< U > &&rhs) noexcept -> self_type & |
Smart pointer behaving like a copiable std::unique_ptr.
cloning_ptr
owns and manages another object through a pointer, like std::unique_ptr
. The difference with std::unique_ptr
is that cloning_ptr
calls the clone
method of the managed object upon copy. Therefore,
cloning_ptris meant to be used with hierarchies of classes which provide a
clone` method which returns a unique pointer.
T | The type of the object managed by the cloning_ptr . It must satisfy the clonable concept. |
Definition at line 126 of file memory.hpp.
using sparrow::cloning_ptr< T >::element_type = typename internal_pointer::element_type |
Definition at line 134 of file memory.hpp.
using sparrow::cloning_ptr< T >::pointer = typename internal_pointer::pointer |
Definition at line 133 of file memory.hpp.
using sparrow::cloning_ptr< T >::self_type = cloning_ptr<T> |
Definition at line 132 of file memory.hpp.
|
constexprdefaultnoexcept |
|
constexprnoexcept |
Definition at line 334 of file memory.hpp.
|
explicitconstexprnoexcept |
Definition at line 340 of file memory.hpp.
|
constexprdefault |
|
constexprnoexcept |
|
constexprdefaultnoexcept |
|
constexprnoexcept |
|
constexprnoexcept |
|
nodiscardconstexprnoexcept |
|
explicitconstexprnoexcept |
|
nodiscardconstexprnoexcept |
|
nodiscardconstexprnoexcept |
|
constexprnoexcept |
|
constexprnoexcept |
Definition at line 393 of file memory.hpp.
|
constexprnoexcept |
|
constexprnoexcept |
Definition at line 384 of file memory.hpp.
|
constexprnoexcept |
Definition at line 368 of file memory.hpp.
|
constexprdefaultnoexcept |
|
constexprnoexcept |
|
constexprnoexcept |
Definition at line 400 of file memory.hpp.
|
constexprnoexcept |
|
noexcept |