61 template<
typename SmartPo
inter,
typename T>
81 template<
class T,
typename SmartPo
inter = Shared<T>>
93 template<
class Target,
typename... Args>
140#include <StormByte/clonable.txx>
Polymorphic copy and move through a base.
Definition clonable.hxx:82
static PointerType MakePointer(Args &&... args)
Allocates Target on Base's heap and returns it as PointerType.
constexpr Clonable(const Clonable &)=default
Copy constructor.
virtual PointerType Clone() const =0
Deep copy into a new PointerType.
virtual PointerType Move()=0
Moves this object into a new PointerType.
constexpr Clonable()=default
Default constructor.
constexpr Clonable(Clonable &&) noexcept=default
Move constructor.
SmartPointer PointerType
SmartPointer alias.
Definition clonable.hxx:84
Same type after stripping cv and references from both sides.
Definition relations.hxx:94
true when SmartPointer is StormByte::Shared<T> or StormByte::Unique<T>.
Definition clonable.hxx:62
Root namespace of the StormByte suite.
DLL-safe shared and unique owners.