嗨,我使用 lambda 函数在 C++11 中创建了一个未来向量。
vector<double> v = { 0, 1.1, 2.2, 3.3, 4.4, 5.5 };
auto K = [=](double z){
double y=0;
for (const auto x : v)
y += x*x*z;
return y;
};
vector<future<double>> VF;
for (double i : {1,2,3,4,5,6,7,8,9})
VF.push_back(async(K,i));
它成功运行,但是当我尝试通过 for_each 调用检索值时,我得到了一个我不理解的编译错误。
for_each(VF.begin(), VF.end(), [](future<double> x){cout << x.get() << " "; });
这些值是通过旧式 for 循环成功获得的:
for (int i = 0; i < VF.size(); i++)
cout << VF[i].get() << " ";
为什么我无法使用 for_each 功能?我正在使用 Visual Studio 2013 也尝试使用 INTEL ( V16) 编译器。
原文由 Giuseppe Levi 发布,翻译遵循 CC BY-SA 4.0 许可协议
以下是使用两种合法选项中的任何一种呈现的测试代码: