【发布时间】:2012-11-14 16:46:41
【问题描述】:
最近我对std::unique_ptr is acceptable for elements of STL containers 的事实感到惊讶,因为我认为这些元素是提供以下功能所必需的(this page 也是如此):
- 没有参数的公共默认构造函数
- 公共复制构造函数
- 公共复制赋值运算符函数
- 公共析构函数
但std::unique_ptr 不可复制以使其持有的指针归单个对象所有,这与上述要求相矛盾。
标准是否改变了要求?如果有,有哪些变化?也许可移动对象或可复制对象就足够了? 我已经在网上搜索了自 C++11 以来要求是否发生了变化,但我找不到任何对我有帮助的页面......
【问题讨论】:
-
我相信 C++11 需要复制构造函数或移动构造函数(类似地,复制赋值或移动赋值)。
-
"C++11 是否改变了对 STL 容器元素的要求?" 是的,非常如此。您是否阅读过明显的地方,例如Wikipedia 问之前?
-
@ildjarn 好吧,我编辑了我的问题,以便清楚地表达我的意图。