12 :
ptr{o.
ptr ? std::make_unique<T>(*o.
ptr) : nullptr} {}
14 this->
ptr = o.
ptr ? std::make_unique<T>(*o.
ptr) :
nullptr;
20 operator std::unique_ptr<T> &() & {
return ptr; }
21 operator const std::unique_ptr<T> &()
const & {
return ptr; }
22 operator std::unique_ptr<T> &&() && {
return std::move(
ptr); }
29 std::unique_ptr<T>
ptr;
copyable_unique_ptr & operator=(const copyable_unique_ptr &o)
copyable_unique_ptr(copyable_unique_ptr &&) noexcept=default
copyable_unique_ptr(const copyable_unique_ptr &o)
std::unique_ptr< T > & operator->()
copyable_unique_ptr(std::unique_ptr< T > ptr)
copyable_unique_ptr()=default
const std::unique_ptr< T > & operator->() const