Namespaces
Variants

std:: nullptr_t

From cppreference.net
Utilities library
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 de pointeur nul nullptr . C'est un type distinct qui n'est pas lui-même un type pointeur ou un type pointeur vers membre. Les prvalues de ce type sont des constantes de pointeur nul , et peuvent être implicitement converties en n'importe quel type pointeur et 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