std::remove_reference
Von cppreference.com
| Definiert in der Kopfdatei <type_traits> |
||
| template< class T > struct remove_reference; |
(seit C++11) | |
Wenn der Typ T ein Referenztyp ist, stellt dies den Member-Typedef type bereit, der der Typ ist, auf den T verweist. Andernfalls ist type T.
Wenn das Programm Spezialisierungen für std::remove_reference hinzufügt, ist das Verhalten undefiniert.
Inhalt |
[bearbeiten] Member types
| Name | Definition |
type
|
der Typ, auf den T verweist, oder T, wenn es keine Referenz ist |
[bearbeiten] Helper types
| template< class T > using remove_reference_t = typename remove_reference<T>::type; |
(seit C++14) | |
[bearbeiten] Mögliche Implementierung
template<class T> struct remove_reference { typedef T type; }; template<class T> struct remove_reference<T&> { typedef T type; }; template<class T> struct remove_reference<T&&> { typedef T type; }; |
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <iostream> #include <type_traits> int main() { std::cout << std::boolalpha; std::cout << "std::remove_reference<int>::type is int? " << std::is_same<int, std::remove_reference<int>::type>::value << '\n'; std::cout << "std::remove_reference<int&>::type is int? " << std::is_same<int, std::remove_reference<int&>::type>::value << '\n'; std::cout << "std::remove_reference<int&&>::type is int? " << std::is_same<int, std::remove_reference<int&&>::type>::value << '\n'; std::cout << "std::remove_reference<const int&>::type is const int? " << std::is_same<const int, std::remove_reference<const int&>::type>::value << '\n'; }
Ausgabe
std::remove_reference<int>::type is int? true std::remove_reference<int&>::type is int? true std::remove_reference<int&&>::type is int? true std::remove_reference<const int&>::type is const int? true
[bearbeiten] Siehe auch
| (C++11) |
prüft, ob ein Typ entweder eine lvalue-Referenz oder eine rvalue-Referenz ist (Klassenvorlage) |
| (C++11)(C++11) |
fügt eine lvalue- oder rvalue-Referenz zum gegebenen Typ hinzu (Klassenvorlage) |
| (C++20) |
kombiniert std::remove_cv und std::remove_reference (Klassenvorlage) |