std::nullptr_t
| Défini dans l'en-tête <cstddef>
|
||
using nullptr_t = decltype(nullptr);
|
(depuis C++11) | |
std::nullptr_t est le type du littéral pointeur nul nullptr. C'est un type distinct qui n'est lui-même ni un type pointeur ni un type pointeur vers membre. Les prvalues de ce type sont des constantes de pointeur nul, et peuvent être converties implicitement en tout type pointeur et type pointeur vers membre.
sizeof(std::nullptr_t) est égal à sizeof(void *).
Notes
La norme C++ exige que
<stddef.h>
place le contenu de
<cstddef>
dans l'espace de noms global, et exige par conséquent que
nullptr_t
soit disponible dans l'espace de noms global lorsque
<stddef.h>
est inclus.
nullptr_t
ne fait pas partie du C avant le C23.
Il n'est pas spécifié si la déclaration de
std::nullptr_t
est disponible dans tout autre en-tête de la bibliothèque standard. Une implémentation peut éviter d'introduire ce nom même lorsque la norme exige l'utilisation de
std::nullptr_t
, par exemple en utilisant
decltype
(
nullptr
)
à la place.
Exemple
Si deux surcharges ou plus acceptent différents types de pointeurs, une surcharge pour
std::nullptr_t
est nécessaire pour accepter un argument de pointeur nul.
#include <cstddef> #include <iostream> void f(int*) { std::cout << "Pointer to integer overload\n"; } void f(double*) { std::cout << "Pointer to double overload\n"; } void f(std::nullptr_t) { std::cout << "null pointer overload\n"; } int main() { int* pi{}; double* pd{}; f(pi); f(pd); f(nullptr); // would be ambiguous without void f(nullptr_t) // f(0); // ambiguous call: all three functions are candidates // f(NULL); // ambiguous if NULL is an integral null pointer constant // (as is the case in most implementations) }
Sortie :
Pointer to integer overload Pointer to double overload null pointer overload
Voir aussi
| nullptr (C++11) | le littéral de pointeur qui spécifie une valeur de pointeur nul |
|
constante de pointeur nul définie par l'implémentation
(macro constante) |
|
|
(C++11)
(
DR*
)
|
vérifie si un type est
std::nullptr_t
(modèle de classe) |
|
Documentation C
pour
nullptr_t
|
|