Pensez à quelque chose comme ça:
#include
struct C {
C(double x=0, double y=0): x(x) , y(y) {
std::cout << "C ctor " << x << " " <
`
quand je compile avec -O0, j'obtiens l'impression
C ctor 56.32 11.99
mais quand je compile avec -O2, j'obtiens
C ctor 0 0
Je sais que nous pouvons utiliser une référence constante pour prolonger une variable temporaire locale, donc quelque chose comme
const A& a = A();
const B& b = a.b;
serait parfaitement légal. mais j'ai du mal à trouver la raison pour laquelle le même mécanisme/règle ne s'applique pas à n'importe quel type de variable temporaire
MODIFICATION POUR RÉFÉRENCE FUTURE:
Je utilise gcc version 6.3.0
`