【发布时间】:2018-05-31 05:56:45
【问题描述】:
我知道的一件事可能不是真的,T 应该是可复制构造,也就是说,T 应该有一个可访问的复制构造函数。
但是,是否还有其他要求,例如可复制分配?
作为补充,我记得 Effective STL 说 vector<bool> 不是标准容器,因为它不符合 T *p=&c[0] 格式良好的要求。
【问题讨论】:
-
你指的是this吗?你问的是什么类型的容器?
-
@codekaizer 所有类型容器的规则。例如,所有容器都要求
T可复制构造。 -
并非所有容器都要求 T 是可复制构造的
-
@M.M 我从this question读到了这个要求。
-
@bigxiao 我认为您误解了标准。如果
T是CopyInsertable转换为X,它实际上表示X(a)的表达式格式正确。如果不是,您不能复制构造容器X<T>。一个简单的例子:std::vector<std::thread> v1; std::vector<std::thread> v2(v1);抛出一个错误,因为std::thread已经删除了复制构造函数。因此,您可以拥有threads 中的vector,但不能复制这样的向量。
标签: c++ c++11 containers