future : has initializer but incomplete type
Je suis programmeur C qui avait aussi utilisé C++ (avant c++11). Je souhaite utiliser c++11 et future, j'ai essayé le petit test qui ne compile pas, je ne comprend pas pourquoi :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #include <future>
#include <iostream>
void called_from_async() {
std::cout << "Async call" << std::endl;
}
int main() {
//called_from_async launched in a separate thread if possible
std::future<void> result( std::async(called_from_async));
std::cout << "Message from main." << std::endl;
//ensure that called_from_async is launched synchronously
//if it wasn't already launched
result.get();
return 0;
} |
Je compile avec :
Code:
1 2 3
| g++ -o future.exe future.cpp
g++ --version :
g++ (MinGW.org GCC-6.3.0-1) 6.3.0 |
Résultat :
Code:
1 2 3 4 5 6 7 8 9 10 11
| future.cpp: In function 'int main()':
future.cpp:167:34: error: variable 'std::future<void> result' has initializer but incomplete type
std::future<void> result( std::async(called_from_async));
^~~~~
future.cpp:167:57: error: invalid use of incomplete type 'class std::future<void>'
std::future<void> result( std::async(called_from_async));
^
In file included from future.cpp:158:0:
c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\future:115:11: note: declaration of 'class std::future<void>'
class future;
^~~~~~ |
Merci !