Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ std::结构类型的唯一\u ptr结构成员_C++_Unique Ptr - Fatal编程技术网

C++ std::结构类型的唯一\u ptr结构成员

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

结构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习惯用法中用作句柄。如果默认 如果使用deleter,则T必须在代码中 在析构函数move赋值中调用deleter 运算符,以及std::unique\u ptr的重置成员函数


所以,是的,std::unique_ptr可以用这种方式使用。

对不起,我不明白。这是同类成员的一个例子。将其指向自身将引入循环引用。
struct A
{
    std::unique_ptr<A> a;
};