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 };