Bonjour,
J'ai eu aujourd'hui un résultat surprenant...
Voici un exemple minimal qui reproduit le comportement :
Le résultat affiché est 1....
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
20
21
22
23 #include <iostream> #include <functional> struct test { std::function<int()> fils; test( std::function<int()> f ) : fils(f) { } test( ) : fils([](){return 0;}) { } int operator() () { return 1+fils(); } }; int main(int argc, char const *argv[]) { std::cout << test(test(test()))() << std::endl; return 0; }
Pourquoi le résultat n'est pas 3 ???
Le compilateur fait il une optimisation non légale ?
Merci pour votre aide
Edit : Je pensai avoir trouvé le bug.... mais en faite non... :^/
Partager