最近、Visual Studio 11 Developer Preview をインストールしました。スレッドと先物をいじっているうちに、私はこの設定にたどり着きました:
#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」には 2 つの引数があるため、VS 11 はそれをコンパイルしたくありません。(ただし、g++ は: http://ideone.com/ANrPj ) (実行時エラーは問題ありません: C++0x の gcc 実験的実装での std::future 例外) (VS 11 エラーメッセージ: http://pastebin. com/F9Xunh2s )
たとえそれが開発者向けのプレビューであっても、このエラーは私には非常に明白であるように見えるので、私は今少し混乱しています。だから私の質問は:
- このコードは C++11 標準に従って正しいですか?
- このバグは既に知られている/報告されていますか?