C++ std::结构类型的唯一\u ptr结构成员
是 结构A { std::唯一的ptr a; };C++ std::结构类型的唯一\u ptr结构成员,c++,unique-ptr,C++,Unique Ptr,是 结构A { std::唯一的ptr a; }; 标准允许吗?我不认为它适用于像std::set这样的容器类型,但是unique\u ptr有什么特别之处吗?当然可以。这基本上是某种路径的实现。是的,它是明确允许的。C++14(n4140)20.8.1/5: 。。。unique\u ptr的模板参数T可能是不完整的类型 也允许使用类似的措词使用std::shared_ptr和std::weak_ptr。根据此: std::unique_ptr可以为不完整的类型T构造,例如 以便于在Pimpl
标准允许吗?我不认为它适用于像
std::set
这样的容器类型,但是unique\u ptr
有什么特别之处吗?当然可以。这基本上是某种路径的实现。是的,它是明确允许的。C++14(n4140)20.8.1/5:
。。。unique\u ptr
的模板参数T
可能是不完整的类型
也允许使用类似的措词使用
std::shared_ptr
和std::weak_ptr
。根据此:
std::unique_ptr可以为不完整的类型T构造,例如
以便于在Pimpl习惯用法中用作句柄。如果默认
如果使用deleter,则T必须在代码中
在析构函数move赋值中调用deleter
运算符,以及std::unique\u ptr的重置成员函数
所以,是的,std::unique_ptr可以用这种方式使用。对不起,我不明白。这是同类成员的一个例子。将其指向自身将引入循环引用。
struct A
{
std::unique_ptr<A> a;
};