Il y a aussi un autre problème pénible à cause de ça.
Si on a des fonctions de ce type:
// Par exemple pour supprimer un élément dans une // structure de donnée, soit en connaissant sa position,// soit en ayant un pointeur sur l'élément concernévoidRemoveItem(int32_tindex);voidRemoveItem(void*item);
La ligne de code suivante est ambiguë:
RemoveItem(NULL);
Et, plus gênant, celle-ci aussi:
RemoveItem(0);// Le 0 est un int mais peut aussi être// casté en void* de façon implicite, sinon le NULL// ne fonctionnerait pas
En principe, avoir nullptr à la place de NULL permettrait d'éviter ce problème. Mais pour l'instant, NULL reste disponible et les règles de conversion pour qu'il continue à fonctionner restent disponibles aussi.
Je suppose qu'on peut se retrouver dans le même type de situation avec les generics en C?
[^] # Re: nullptr
Posté par pulkomandy (site web personnel, Mastodon) . En réponse à la dépêche Nouveautés du langage C dans sa prochaine version C23. Évalué à 5. Dernière modification le 18 janvier 2023 à 10:54.
Il y a aussi un autre problème pénible à cause de ça.
Si on a des fonctions de ce type:
La ligne de code suivante est ambiguë:
Et, plus gênant, celle-ci aussi:
En principe, avoir nullptr à la place de NULL permettrait d'éviter ce problème. Mais pour l'instant, NULL reste disponible et les règles de conversion pour qu'il continue à fonctionner restent disponibles aussi.
Je suppose qu'on peut se retrouver dans le même type de situation avec les generics en C?