clone_tools::clone_ptr<T>
Defined in header <clone/clone_ptr.hpp>
Like std::unique_ptr
but requires the managed type to support cloning and then uses that to support copy-construction and copy-assignment by cloning the managed object.
Doesn't currently support:
- deleter
- array version
Member types
| |
|:--- |:--- |
| pointer type
| std::remove_reference<Deleter>::type::pointer
if that type exists, otherwise T*. Must satisfy NullablePointer. |
| element_type
| T, the type of the object managed by this unique_ptr |
Member functions
| |
|:--- |:--- |
| (constructor)
| constructs a new clone_tools::clone_ptr
(public member function) |
| (destructor)
| destructs the managed object
(public member function) |
| operator=
| assigns the clone_tools::clone_ptr
(public member function) |
|
Modifiers
| |release
| returns a pointer to the managed object and releases the ownership (public member function) | |
reset
| replaces the managed object (public member function) | |
swap
| swaps the managed objects (public member function) | |
Observers
| |get
| returns a pointer to the managed object (public member function) | |
operator bool
| checks if there is associated managed object (public member function) | |
operator*
operator->
| dereferences pointer to the managed object (public member function) |
Non-member functions
Within namespace clone_tools
TODO: make clear what (if anything) is the point of each of these functions.
| |
| --- | --- | --- |
| make_unique
| constructs a new std::unique_ptr
(function template) | (until C++14)
|
| make_clone
| constructs a new std::clone_ptr
(function template) | |
| make_clone_of_uptr
| creates a clone_ptr from a std::unique_ptr (copy/move)
(function template) | |
| make_const_clone_of_uptr
| creates a const clone_ptr from a std::unique_ptr (copy/move)
(function template) | |
| clone_and_make_clone
| clones an object into a clone_ptr
(function template) | |
| clone_and_make_const_clone
| clones an object into a const clone_ptr
(function template) | |
Type trait gubbins
Within namespace clone_tools
Observers |
||
is_clone_v<> |
whether the type is a clone gubbins thing (variable template) |
since C++14 |
is_clone_v<> |
whether the type is a clone gubbins thing (variable template) |
since C++14 |
Observers |
||
is_unique_ptr_v<> |
whether the type is a clone gubbins thing (variable template) |
since C++14 |
is_unique_ptr_after_decay_v<> |
whether the type is a clone gubbins thing (variable template) |
since C++14 |
Example
#include <clone/clone_ptr.hpp>
const auto ptr_a = make_clone<concrete_type_a, base_type>( "hello" );
const auto ptr_b{ ptr_a };