Bonjour,

J'ai eu aujourd'hui un résultat surprenant...
Voici un exemple minimal qui reproduit le comportement :
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;
}
Le résultat affiché est 1....
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... :^/