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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !