std::remove_pointer
Von cppreference.com
| Definiert in der Kopfdatei <type_traits> |
||
| template< class T > struct remove_pointer; |
(seit C++11) | |
Stellt den Member-Typedef type bereit, der der Typ ist, auf den T zeigt, oder, wenn T kein Zeiger ist, dann ist type dasselbe wie T.
Wenn das Programm Spezialisierungen für std::remove_pointer hinzufügt, ist das Verhalten undefiniert.
Inhalt |
[bearbeiten] Member-Typen
| Name | Definition |
type
|
Der Typ, auf den T zeigt, oder T, wenn es kein Zeiger ist |
[bearbeiten] Hilfstypen
| template< class T > using remove_pointer_t = typename remove_pointer<T>::type; |
(seit C++14) | |
[bearbeiten] Mögliche Implementierung
template<class T> struct remove_pointer { typedef T type; }; template<class T> struct remove_pointer<T*> { typedef T type; }; template<class T> struct remove_pointer<T* const> { typedef T type; }; template<class T> struct remove_pointer<T* volatile> { typedef T type; }; template<class T> struct remove_pointer<T* const volatile> { typedef T type; }; |
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <type_traits> static_assert ( std::is_same_v<int, int> == true && std::is_same_v<int, int*> == false && std::is_same_v<int, int**> == false && std::is_same_v<int, std::remove_pointer_t<int>> == true && std::is_same_v<int, std::remove_pointer_t<int*>> == true && std::is_same_v<int, std::remove_pointer_t<int**>> == false && std::is_same_v<int, std::remove_pointer_t<int* const>> == true && std::is_same_v<int, std::remove_pointer_t<int* volatile>> == true && std::is_same_v<int, std::remove_pointer_t<int* const volatile>> == true ); int main() {}
[bearbeiten] Siehe auch
| (C++11) |
prüft, ob ein Typ ein Zeigertyp ist (Klassenvorlage) |
| (C++11) |
fügt einen Zeiger zum gegebenen Typ hinzu (Klassenvorlage) |