std:: is_null_pointer
|
Definiert im Header
<type_traits>
|
||
|
template
<
class
T
>
struct is_null_pointer ; |
(seit C++11) | |
std::is_null_pointer
ist ein
UnaryTypeTrait
.
Prüft, ob
T
der Typ
std::nullptr_t
ist.
Stellt die Member-Konstante
value
bereit, die gleich
true
ist, falls
T
der Typ
std::nullptr_t
,
const
std::
nullptr_t
,
volatile
std::
nullptr_t
oder
const
volatile
std::
nullptr_t
ist.
Andernfalls ist value gleich false .
Falls das Programm Spezialisierungen für
std::is_null_pointer
oder
std::is_null_pointer_v
(seit C++17)
hinzufügt, ist das Verhalten undefiniert.
Inhaltsverzeichnis |
Template-Parameter
| T | - | ein zu prüfender Typ |
Hilfsvariablen-Template
|
template
<
class
T
>
constexpr bool is_null_pointer_v = is_null_pointer < T > :: value ; |
(seit C++17) | |
Geerbt von std:: integral_constant
Member-Konstanten
|
value
[static]
|
true
wenn
T
der Typ
std::nullptr_t
(möglicherweise cv-qualifiziert) ist,
false
andernfalls
(öffentliche statische Member-Konstante) |
Member-Funktionen
|
operator bool
|
konvertiert das Objekt zu
bool
, gibt
value
zurück
(öffentliche Member-Funktion) |
|
operator()
(C++14)
|
gibt
value
zurück
(öffentliche Member-Funktion) |
Member-Typen
| Typ | Definition |
value_type
|
bool |
type
|
std:: integral_constant < bool , value > |
Mögliche Implementierung
template<class T> struct is_null_pointer : std::is_same<std::nullptr_t, std::remove_cv_t<T>> {}; |
Hinweise
std::is_pointer ist false für std::nullptr_t da es kein eingebauter Zeigertyp ist.
In libc++,
std::is_null_pointer
ist im C++11-Modus nicht verfügbar.
| Feature-Test Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_is_null_pointer
|
201309L
|
(C++14)
(DR11) |
std::is_null_pointer
|
Beispiel
#include <type_traits> static_assert(std::is_null_pointer_v<decltype(nullptr)>); static_assert(!std::is_null_pointer_v<int*>); static_assert(!std::is_pointer_v<decltype(nullptr)>); static_assert(std::is_pointer_v<int*>); int main() { }
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 2247 | C++11 | der Type Trait zur Erkennung von std::nullptr_t fehlte | hinzugefügt |
Siehe auch
|
(C++11)
|
prüft, ob ein Typ
void
ist
(Klassentemplate) |
|
(C++11)
|
prüft, ob ein Typ ein Array-Typ ist
(Klassentemplate) |
|
(C++11)
|
prüft, ob ein Typ ein Zeiger-Typ ist
(Klassentemplate) |
|
(C++11)
|
prüft, ob ein Typ ein Aufzählungstyp ist
(Klassentemplate) |
|
(C++11)
|
prüft, ob ein Typ ein Union-Typ ist
(Klassentemplate) |
|
(C++11)
|
prüft, ob ein Typ ein Klassen-Typ (keine Union) ist
(Klassentemplate) |
|
(C++11)
|
prüft, ob ein Typ ein Funktionstyp ist
(Klassentemplate) |
|
(C++11)
|
prüft, ob ein Typ ein Objekt-Typ ist
(Klassentemplate) |