std::remove_pointer
De cppreference.com
Definido en el archivo de encabezado <type_traits>
|
||
template< class T > struct remove_pointer; |
(desde C++11) | |
Proporciona la definición de tipo (typedef) miembro type
, que es el tipo al que apunta T
, o, si T
no es un puntero, entonces type
es el mismo que T
.
El comportamiento de un programa que añade especializaciones para remove_pointer
no está definido.
Contenido |
[editar] Tipos miembro
Nombre | Definición |
type
|
El tipo al que apunta T , o T si no es un puntero.
|
[editar] Tipos auxiliares
template< class T > using remove_pointer_t = typename remove_pointer<T>::type; |
(desde C++14) | |
[editar] Posible implementación
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;}; |
[editar] Ejemplo
Ejecuta este código
#include <iostream> #include <type_traits> template<class T1, class T2> void print_is_same() { std::cout << std::is_same<T1, T2>() << '\n'; } void print_separator() { std::cout << "-----\n"; } int main() { std::cout << std::boolalpha; print_is_same<int, int>(); // verdadero print_is_same<int, int*>(); // falso print_is_same<int, int**>(); // falso print_separator(); print_is_same<int, std::remove_pointer<int>::type>(); // verdadero print_is_same<int, std::remove_pointer<int*>::type>(); // verdadero print_is_same<int, std::remove_pointer<int**>::type>(); // falso print_separator(); print_is_same<int, std::remove_pointer<int* const>::type>(); // verdadero print_is_same<int, std::remove_pointer<int* volatile>::type>(); // verdadero print_is_same<int, std::remove_pointer<int* const volatile>::type>(); // verdadero }
Salida:
true false false ----- true true false ----- true true true
[editar] Véase también
(C++11) |
Comprueba si un tipo es un tipo puntero (plantilla de clase) |
(C++11) |
Agrega puntero al tipo dado (plantilla de clase) |