Spec-Zone.ru › C++

std::meta::remove_const, std::meta::remove_volatile, std::meta::remove_cv

Определено в заголовочном файле <meta>
consteval std::meta::info remove_const( std::meta::info r );
(1) (начиная с C++26)
consteval std::meta::info remove_volatile( std::meta::info r );
(2) (начиная с C++26)
consteval std::meta::info remove_cv( std::meta::info r );
(3) (начиная с C++26)

Возвращает отражение типа T, представленного r, за исключением того, что у типа удаляются его самые внешние cv-квалификаторы.

1) Удаляет самый внешний квалификатор const (если он есть). Эквивалентно
return std::meta::dealias(^^std::remove_const_t<T>);.
2) Удаляет самый внешний квалификатор volatile (если он есть). Эквивалентно
return std::meta::dealias(^^std::remove_volatile_t<T>);.
3) Удаляет самый внешний квалификатор const, самый внешний квалификатор volatile или оба квалификатора (если они есть). Эквивалентно
return std::meta::dealias(^^std::remove_cv_t<T>);.

Параметры

r - значение отражения

Возвращаемое значение

Отражение типа, представленного r, с соответствующим образом удалёнными самыми внешними cv-квалификаторами.

Исключения

Выбрасывает std::meta::exception, если r не представляет тип или псевдоним типа.

Пример

#include <meta>

static_assert
(""
    && (remove_cv(^^int) == ^^int)
    && (remove_cv(^^const int) == ^^int)
    && (remove_cv(^^volatile int) == ^^int)
    && (remove_cv(^^const volatile int) == ^^int)
    // remove_cv only works on types, not on pointers
    && (remove_cv(^^const volatile int*) != ^^int*)
    && (remove_cv(^^const volatile int*) == ^^const volatile int*)
    && (remove_cv(^^const int* volatile) == ^^const int*)
    && (remove_cv(^^int* const volatile) == ^^int*)
);

int main() {}

См. также

is_const
(C++26)
проверяет, представляет ли отражение тип const или тип функции с квалификатором const
(функция)
is_volatile
(C++26)
проверяет, представляет ли отражение тип volatile или тип функции с квалификатором volatile
(функция)
add_cvadd_constadd_volatile
(C++26)(C++26)(C++26)
добавляет к отражённому типу квалификаторы const и/или volatile
(функция)
remove_cvref
(C++26)
объединяет meta::remove_cv и meta::remove_reference
(функция)
remove_cvremove_constremove_volatile
(C++11)(C++11)(C++11)
удаляет квалификаторы const и/или volatile из заданного типа
(шаблон класса)

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

Spec-Zone.ru

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