Je n'avais pas remarqué que Clang faisant la même chose même dans le cas où on initialise "Do" à nullptr ou 0.
Dans ce dernier cas, je suis encore plus choqué: ce n'est pas un cas indéfini! On demande à appeler une adresse précise, de quel droit Clang modifie-t-il notre code ?
Si j'écris Do = (Function)0 --> paf, remplacé par EraseAll
Si j'écris Do = (Function)1 --> hop, il prend la valeur
Je ne vois aucune justification valable pour ce genre "d'optimisation".
[^] # Re: Comportement attendu
Posté par Christophe . En réponse au journal Compilateur trop intelligent. Évalué à 8.
Je n'avais pas remarqué que Clang faisant la même chose même dans le cas où on initialise "Do" à nullptr ou 0.
Dans ce dernier cas, je suis encore plus choqué: ce n'est pas un cas indéfini! On demande à appeler une adresse précise, de quel droit Clang modifie-t-il notre code ?
Si j'écris Do = (Function)0 --> paf, remplacé par EraseAll
Si j'écris Do = (Function)1 --> hop, il prend la valeur
Je ne vois aucune justification valable pour ce genre "d'optimisation".