Пространства имён
Варианты
Действия

std::remove_pointer

Материал из cppreference.com
< cpp‎ | types
 
 
Библиотека метапрограммирования
Свойства типов
Категории типов
(C++11)
(C++14)  
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Свойства типов
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(до C++20*)
(C++11)(устарело в C++20)
(C++11)
Константы свойств типа
Метафункции
(C++17)
Поддерживаемые операции
Запросы отношений и свойств
Модификации типов
Преобразования типов
(C++11)(устарело в C++23)
(C++11)(устарело в C++23)
(C++11)
(C++11)
(C++17)

(C++11)(до C++20*)(C++17)
Рациональная арифметика времени компиляции
Целочисленные последовательности времени компиляции
 
Определено в заголовочном файле <type_traits>
template<class T >
struct remove_pointer;
(начиная с C++11)

Предоставляет typedef элемент type, который является типом, на который указывает T, или, если T не является указателем, тогда type является тем же, что и T.

Поведение программы, добавляющей специализации для std::remove_pointer не определено.

Содержание

[править]Типы-элементы

Имя Определение
type тип, на который указывает T, или T, если это не указатель

[править]Вспомогательный тип

template<class T >
using remove_pointer_t =typename remove_pointer<T>::type;
(начиная с C++14)

[править]Возможная реализация

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*constvolatile>{typedef T type;};

[править]Пример

#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*constvolatile>>==true);   int main(){}

[править]Смотрите также

(C++11)
проверяет, является ли тип типом указателя
(шаблон класса)[править]
добавляет указатель в данный тип
(шаблон класса)[править]
close