std::remove_reference
De cppreference.com
<tbody>
</tbody>
| Definido en el archivo de encabezado <type_traits>
|
||
template< class T > struct remove_reference; |
(desde C++11) | |
Si el tipo T tipo referencia, proporciona el miembro typedef type, que es el tipo al que hace referencia T. De lo contrario type es T.
El comportamiento de un programa que añade especializaciones para remove_reference no está definido.
Tipos miembro
| Nombre | Definición |
type
|
El tipo al que hace referencia T o T si no es una referencia.
|
Tipos auxiliares
<tbody> </tbody> template< class T > using remove_reference_t = typename remove_reference<T>::type; |
(desde C++14) | |
Posible implementación
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;};
|
Ejemplo
Ejecuta este código
#include <iostream> // std::cout
#include <type_traits> // std::is_same
template<class T1, class T2>
void print_is_same() {
std::cout << std::is_same<T1, T2>() << '\n';
}
int main() {
std::cout << std::boolalpha;
print_is_same<int, int>();
print_is_same<int, int &>();
print_is_same<int, int &&>();
print_is_same<int, std::remove_reference<int>::type>();
print_is_same<int, std::remove_reference<int &>::type>();
print_is_same<int, std::remove_reference<int &&>::type>();
}
Salida:
true
false
false
true
true
true
Véase también
(C++11) |
Comprueba si un tipo es o bien una referencia lvalue o una referencia rvalue (plantilla de clase) |
(C++11)(C++11) |
Añade referencia lvalue o rvalue al tipo dado. (plantilla de clase) |
(C++20) |
Combina std::remove_cv y std::remove_reference. (plantilla de clase) |