Do étant une variable globale, elle est déjà (implicitement) initialisée à zéro. Testez
static Function Do = nullptr;
Vous verrez que le comportement est le même.
D'après moi, il faudrait:
- Soit indiquer dans son type que ce pointeur ne dois jamais être null, ce qui forcerait l'utilisateur à donner une valeur par défaut. Mais ce n'est pas possible en C++..
- Soit utiliser un type optionnel (du genre std::optional) qui force l'utilisateur à traiter le cas où le pointeur est vide explicitement
Sinon, il faudrait déconseiller l'utilisation de pointeurs de fonction en C++. Au lieu de ça, on peut utiliser std::function.
[^] # Re: Comportement attendu
Posté par Maxime Arthaud . En réponse au journal Compilateur trop intelligent. Évalué à 4.
Doétant une variable globale, elle est déjà (implicitement) initialisée à zéro. Testezstatic Function Do = nullptr;Vous verrez que le comportement est le même.
D'après moi, il faudrait:
- Soit indiquer dans son type que ce pointeur ne dois jamais être null, ce qui forcerait l'utilisateur à donner une valeur par défaut. Mais ce n'est pas possible en C++..
- Soit utiliser un type optionnel (du genre
std::optional) qui force l'utilisateur à traiter le cas où le pointeur est vide explicitementSinon, il faudrait déconseiller l'utilisation de pointeurs de fonction en C++. Au lieu de ça, on peut utiliser
std::function.