标签:type 其他 一个 ble size 所有权 原来 智能 移动
unique_ptr<T> myPtr(new T);
unique_ptr<T> myOhterPtr = myPtr; //错误:不能复制
unique_ptr<T> myPtr(new T); //Okay
unique_ptr<T> myOhterPtr = std::move(myPtr);//Okay,
unique_ptr<T> ptr = myPtr; //错误,只能移动,不可复制
//支持普通指针
template<class T, class... Args> inline
typename enable_if<!is_array<T>::value, unique_ptr<T>>::type
make_unique(Args&&... args)
{
return unique_ptr<T>(new T(std::forward<Args>(args)...));
}
//支持动态数组
template<class T> inline
typename enable_if<is_array<T>::value && extent<T>::value==0,unique_ptr<T>>::type
make_unique(size_t size)
{
typedef typename remove_extent<T>::type U;
return unique_ptr<T>(new U[size]());
}
//过滤掉定长数组的情况
template<class T, class... Args>
typename enable_if<extent<T>::value != 0,void>::type
make_unique(Args&&...) = delete;
标签:type 其他 一个 ble size 所有权 原来 智能 移动
原文地址:https://www.cnblogs.com/fewolflion/p/12937891.html