Недавно я установил предварительный просмотр Visual Studio 11 Developer. Во время игры с потоками и фьючерсами я подошел к этой настройке:VS 11 с std :: future - Это ошибка?
#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 не хочет его компилировать. (Тем не менее, г ++ делает: http://ideone.com/ANrPj) (Ошибка выполнения не проблема: std::future exception on gcc experimental implementation of C++0x) (VS 11 ErrorMessage: http://pastebin.com/F9Xunh2s)
Я немного смущен прямо сейчас, так как эта ошибка кажется очень очевидным для меня, даже если это является предварительным просмотром разработчика. Итак, мои вопросы:
- Правильно ли этот код соответствует стандарту C++ 11?
- Эта ошибка уже известна/сообщена?
Я нашел отчет об ошибке: http://connect.microsoft.com/VisualStudio/feedback/details/729760/std-async-fails-compilation-for-callable-with-two-or-more-arguments – yohjp