コピー不可能なオブジェクトのベクトルのベクトルを初期化することは可能ですか?
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 についてです)