Namespaces
Variants

std::nullptr_t

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support linguistique
Support des types (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (déprécié en C++20)
 
 
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