std:: is_pointer
|
Definiert im Header
<type_traits>
|
||
|
template
<
class
T
>
struct is_pointer ; |
(seit C++11) | |
std::is_pointer
ist ein
UnaryTypeTrait
.
Prüft, ob
T
ein
Zeiger auf Objekt oder Funktion
(einschließlich Zeiger auf
void
, aber ausschließlich Zeiger auf Mitglieder) oder eine cv-qualifizierte Version davon ist. Stellt die Member-Konstante
value
bereit, die gleich
true
ist, wenn
T
ein Objekt-/Funktionszeigertyp ist. Andernfalls ist
value
gleich
false
.
Wenn das Programm Spezialisierungen für
std::is_pointer
oder
std::is_pointer_v
hinzufügt, ist das Verhalten undefiniert.
Inhaltsverzeichnis |
Template-Parameter
| T | - | ein zu prüfender Typ |
Hilfsvariablen-Template
|
template
<
class
T
>
constexpr bool is_pointer_v = is_pointer < T > :: value ; |
(seit C++17) | |
Geerbt von std:: integral_constant
Member-Konstanten
|
value
[static]
|
true
falls
T
ein Pointer-Typ 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_pointer : std::false_type {}; template<class T> struct is_pointer<T*> : std::true_type {}; template<class T> struct is_pointer<T* const> : std::true_type {}; template<class T> struct is_pointer<T* volatile> : std::true_type {}; template<class T> struct is_pointer<T* const volatile> : std::true_type {}; |
`-Tags wurde gemäß den Anforderungen nicht übersetzt, da es sich um C++-Code handelt. Die HTML-Struktur und Attribute bleiben ebenfalls unverändert.
Beispiel
#include <type_traits> int main() { struct A { int m; void f() {} }; int A::*mem_data_ptr = &A::m; // ein Zeiger auf Member-Daten void (A::*mem_fun_ptr)() = &A::f; // ein Zeiger auf Member-Funktion static_assert( ! std::is_pointer<A>::value && ! std::is_pointer_v<A> // dasselbe wie oben, aber in C++17! && ! std::is_pointer<A>() // dasselbe wie oben, mit geerbtem operator bool && ! std::is_pointer<A>{} // dito && ! std::is_pointer<A>()() // dasselbe wie oben, mit geerbtem operator() && ! std::is_pointer<A>{}() // dito && std::is_pointer_v<A*> && std::is_pointer_v<A const* volatile> && ! std::is_pointer_v<A&> && ! std::is_pointer_v<decltype(mem_data_ptr)> && ! std::is_pointer_v<decltype(mem_fun_ptr)> && std::is_pointer_v<void*> && ! std::is_pointer_v<int> && std::is_pointer_v<int*> && std::is_pointer_v<int**> && ! std::is_pointer_v<int[10]> && ! std::is_pointer_v<std::nullptr_t> && std::is_pointer_v<void (*)()> ); }
Siehe auch
|
(C++11)
|
prüft, ob ein Typ ein Zeiger auf eine nicht-statische Member-Funktion oder ein Objekt ist
(Klassen-Template) |
|
(C++11)
|
prüft, ob ein Typ ein nicht-statischer Member-Objekt-Zeiger ist
(Klassen-Template) |
|
(C++11)
|
prüft, ob ein Typ ein nicht-statischer Member-Funktions-Zeiger ist
(Klassen-Template) |
|
(C++11)
|
prüft, ob ein Typ ein Array-Typ ist
(Klassen-Template) |
|
(C++11)
|
prüft, ob ein Typ ein Skalar-Typ ist
(Klassen-Template) |