我最近安装了 Visual Studio 11 开发者预览版。在玩线程和期货时,我遇到了这个设置:
#include <future>
#include <iostream>
int foo(unsigned a, unsigned b)
{
return 5;
}
int main()
{
std::future<int> f = std::async(foo, 5, 7);
std::cout << f.get();
}
所以,很简单。但是由于“foo”有两个参数,VS 11 不想编译它。(但是,g++ 确实如此:http: //ideone.com/ANrPj)(运行时错误没问题:C++0x 的 gcc 实验实现上的 std::future 异常)(VS 11 错误消息:http://pastebin. com/F9Xunh2s )
我现在有点困惑,因为这个错误对我来说似乎非常明显,即使它是开发人员预览版。所以我的问题是:
- 根据 C++11 标准,这段代码是否正确?
- 此错误是否已知/已报告?