Namespaces
Variants

nullptr_t

From cppreference.net
< c ‎ | types
Défini dans l'en-tête <stddef.h>
typedef typeof ( nullptr ) nullptr_t ;
(depuis C23)

nullptr_t est le type de la constante de pointeur nul prédéfinie, nullptr . C'est un type distinct qui n'est pas lui-même un type pointeur. Il peut être implicitement converti en n'importe quel type pointeur ou bool , et le résultat est la valeur de pointeur nul de ce type ou false respectivement. Aucun type autre que nullptr_t lui-même ne peut être converti ou explicitement casté en nullptr_t .

sizeof ( nullptr_t ) et alignof ( nullptr_t ) sont respectivement égaux à sizeof ( void * ) et alignof ( void * ) .

nullptr_t n'a qu'une seule valeur valide, à savoir nullptr . La représentation objet de nullptr est identique à celle de ( void * ) 0 . Si une conversion lvalue produit une valeur nullptr_t avec une représentation objet différente, le comportement est indéfini.

Exemple

Démontrer que nullptr_t est un type distinct.

#include <stddef.h>
#include <stdio.h>
#define DETECT_NULL_POINTER_CONSTANT(e) \
    _Generic(e,                         \
        void* : puts("void*"),          \
        nullptr_t : puts("nullptr_t"),  \
        default : puts("other")         \
    )
int main()
{
    DETECT_NULL_POINTER_CONSTANT(((void*)0));
    DETECT_NULL_POINTER_CONSTANT(0);
    DETECT_NULL_POINTER_CONSTANT(nullptr);
}

Sortie :

void*
other
nullptr_t

Références

  • Norme C23 (ISO/IEC 9899:2024):
  • 7.21.2 Le type nullptr_t (p: 315-316)

Voir aussi

constante de pointeur nul définie par l'implémentation
(macro constante)
Documentation C++ pour nullptr_t