oui j'aime bien crier au loup avec "ouh la la bug incroyable du compilateur!!"
soit le code suivant :
ce code echoue sur gcc mingw 4.3.0
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 <cstdio> template< typename T > void do_work(const T& worker) { worker(); } int main(int argc, char *argv[]) { struct Worker { void operator()() const { printf("Hello World!\n"); } }; do_work(Worker()); }
et compile parfaitement sur MSVC 8.0 et 9.0 (express si il faut)
ce qui déplait a GCC c'est la localité de la définition du type Worker, si on le met en dehors de main ca marche très bien.
Selon moi, c'est du caca, ca devrait marcher... a moins que quelqu'un me dise le contraire ? c'est bien un bug de GCC ? et si oui, quelels versions ? vous avez deja vu ca ? ou alors un bug de MSVC qui est trop laxiste?
Partager