nullptr_t
|
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
|
|