是否允許編譯器消除按值捕獲所需的副本?C++ 0x:爲Lambda捕獲值,總是一個副本?
vector<Image> movie1;
apply([=movie1](){ return movie1.size(); });
- 是否有任何情況下,編譯器並不需要複製
movie1
?- 也許如果編譯器可以知道,那
apply
實際上並不是更改movie1
? - 或者是否幫助Lambdas默認
const
仿函數在任何情況下?
- 也許如果編譯器可以知道,那
- 它是否幫助在所有是
vector
有轉移構造和移動分配?- 如果是,是否需要將這些添加到
Image
以防止昂貴的副本在這裏?
- 如果是,是否需要將這些添加到
- 有沒有在機制上的差異何時以及如何需要副本通過值捕獲相比按值參數?例如。
void operate(vector<Image> movie)
?
「爲什麼不通過引用捕獲」?我正在理解所有的影響。我同意。 「唯一的區別......」是一個很好的答案。完善! – towi 2011-03-13 16:03:13