Résultat inattendu : exemple tres simple d'imbrication de std::function
Bonjour,
J'ai eu aujourd'hui un résultat surprenant...
Voici un exemple minimal qui reproduit le comportement :
Code:
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 :roll:
Edit : Je pensai avoir trouvé le bug.... mais en faite non... :^/