• [^] # Re: nullptr

    Posté par (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:

     // 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é
     void RemoveItem(int32_t index);
     void RemoveItem(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?