Fra*_*Moy 3 c++ lambda move rvalue-reference c++11
我有一个关于为解决C++ 11 lambdas中的移动捕获而提出的解决方法的问题.特别是以迈耶的书为例:
std::vector<double> data;
...
auto func = std::bind( [](const std::vector<double>& data)
{ /*uses of data*/ },
std::move(data)
);
Run Code Online (Sandbox Code Playgroud)
我的问题是:将参数"data"声明为右值参考会产生什么后果/意义?:
auto func = std::bind( [](std::vector<double>&& data)
...
Run Code Online (Sandbox Code Playgroud)
为了帮助您指导答案,我将提出三项索赔.请告诉我,我是对还是错:
提前致谢.
将参数"
data" 声明为右值参考会产生什么后果/意义?
它不会编译(至少如果你试图实际调用func).std::bind始终将绑定参数作为左值传递,不会绑定到右值引用.
在这两种情况下,在定义"func"之后使用数据是不安全的.
data移动使其处于有效但未指定的状态.您可以像使用内容未知的向量一样使用它.