Spec-Zone.ru › C++

std::remove_cvref

Определено в заголовочном файле <type_traits>
template< class T >
struct remove_cvref;
(с C++20)

Если тип T является типом ссылки, предоставляет член-тип type, который является типом, на который ссылается T, с удалёнными самыми внешними квалификаторами cv. В противном случае type является T, с удалёнными самыми внешними квалификаторами cv.

Поведение программы, которая добавляет специализации для std::remove_cvref, не определено.

Типы-члены

Название Определение
type тип, на который ссылается T или сам T, если это не ссылка, с удалёнными самыми внешними квалификаторами cv

Вспомогательные типы

template< class T >
using remove_cvref_t = typename remove_cvref<T>::type;
(с C++20)

Возможная реализация

template<class T>
struct remove_cvref
{
    typedef std::remove_cv_t<std::remove_reference_t<T>> type;
};

Примечания

Макрос проверки наличия функции Значение Стандарт Функция
__cpp_lib_remove_cvref 201711L (C++20) std::remove_cvref

Пример

#include <type_traits>
 
int main()
{
    static_assert(std::is_same_v<std::remove_cvref_t<int>, int>);
    static_assert(std::is_same_v<std::remove_cvref_t<int&>, int>);
    static_assert(std::is_same_v<std::remove_cvref_t<int&&>, int>);
    static_assert(std::is_same_v<std::remove_cvref_t<const int&>, int>);
    static_assert(std::is_same_v<std::remove_cvref_t<const int[2]>, int[2]>);
    static_assert(std::is_same_v<std::remove_cvref_t<const int(&)[2]>, int[2]>);
    static_assert(std::is_same_v<std::remove_cvref_t<int(int)>, int(int)>);
}

См. также

remove_cvremove_constremove_volatile
(C++11)(C++11)(C++11)
удаляет спецификаторы const и/или volatile из заданного типа
(шаблон класса)
remove_reference
(C++11)
удаляет ссылку из заданного типа
(шаблон класса)
decay
(C++11)
применяет преобразования типов, как при передаче аргумента функции по значению
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/types/remove_cvref

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API