27 static_assert(!std::is_base_of<FCT::RefCount, T>::value,
28 "UniquePtr cannot manage types derived from FCT::RefCount. Use a reference-counting pointer instead.");
54 reset(other.release());
84 void reset(T* ptr =
nullptr) noexcept {
95 T*
get() const noexcept {
119 explicit operator bool() const noexcept {
120 return m_ptr !=
nullptr;
136 template<
typename T,
typename... Args>
#define FCT_NEW(type,...)
T * operator->() const noexcept
箭头操作符。
UniquePtr & operator=(UniquePtr &&other) noexcept
移动赋值运算符,从另一个 UniquePtr 转移所有权。
UniquePtr & operator=(const UniquePtr &)=delete
UniquePtr(UniquePtr &&other) noexcept
移动构造函数,从另一个 UniquePtr 转移所有权。
UniquePtr(const UniquePtr &)=delete
void reset(T *ptr=nullptr) noexcept
替换管理的对象。
T * get() const noexcept
获取裸指针。
UniquePtr() noexcept
默认构造函数,创建一个空的 UniquePtr。
~UniquePtr()
析构函数,销毁所管理的对象。
T & operator*() const
解引用操作符。
T * release() noexcept
释放对当前对象的所有权,并返回裸指针。
UniquePtr(T *ptr) noexcept
从裸指针构造 UniquePtr,获得其所有权。
UniquePtr< T > makeUnique(Args &&... args)
创建一个 UniquePtr 的辅助函数,类似于 std::make_unique。