簡體   English   中英

是否可以初始化不可復制對象的向量的向量?

[英]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類型的其他要求。

其中“這些組件”是指dequelistqueuestackvectormapsetbitset

(也許有或沒有某種方法可以使它看起來可以在特定的編譯器上運行,但這超出了標准C ++的范圍)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM