[英]Is it possible to initialize a vector of vectors of non-copyable objects?
是否可以初始化不可复制对象的向量的向量?
class obj : private boost::noncopyable {
// ...
};
vector<vector<obj> > v(10); // OK
for(int i = 0; i < v.size(); ++i)
v[i].resize(10); // ERROR
也
vector<vector<obj> > v(10, vector<obj>(10)); // ERROR
我了解上述代码为何无法编译。 我要问的是是否有解决方法。 似乎如果std::vector
具有不需要复制构造函数的成员函数(如resize_from_zero
,那么这将是可行的。
(我的问题是关于C ++ 03,如果这有所作为)
这是不可能的; C ++ 03要求vector
元素必须是CopyConstructible和Assignable。
引用:C ++ 03 [lib.containers.requirements] / 3
存储在这些组件中的对象的类型必须满足
CopyConstructible
类型(20.1.3)的要求以及Assignable
类型的其他要求。
其中“这些组件”是指deque
, list
, queue
, stack
, vector
, map
, set
, bitset
。
(也许有或没有某种方法可以使它看起来可以在特定的编译器上运行,但这超出了标准C ++的范围)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.