Namespaces
Variants

std::meta::annotations_of_with_type

С ru.cppreference.net
< cpp | meta
 
 
 
Библиотека отражения
Запросы доступности членов
Идентификация области видимости
Запросы членов отражения
Отражение аннотаций
Извлечение значения
Подстановка отражения
Отражение результата выражения
Генерация определения класса

Первичные категории типов
Составные категории типов
Свойства типов ➜
Отношения типов
 
Типы и запросы отражения
Запросы отражения
Запросы компоновки отражения
Свойства типов
Запросы свойств типов
 
Определено в заголовке <meta>
consteval std::vector<std::meta::info>
    annotations_of_with_type( std::meta::info item, std::meta::info type );
(начиная с C++26)

Возвращает результат std::meta::annotations_of(item) отфильтрованный в соответствии с типом, представленным type.

Параметры

item - значение отражения
type - отражение типа или псевдонима типа

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

Вектор, содержащий каждый элемент e в std::meta::annotations_of(item), для которого std::meta::remove_const(std::meta::type_of(e)) равно std::meta::remove_const(type), сохраняя их порядок.

Исключения

Выбрасывает std::meta::exception, если std::meta::annotations_of(item) выбросило бы исключение, или если

  • std::meta::dealias(type) не представляет тип, или
  • std::meta::is_complete_type(type) равно false.

Пример

#include <meta>

struct Option { bool value; };

struct C {
    [[=Option{true}]] int a;
    [[=Option{false}]] int b;
};

static_assert([:annotations_of_with_type(^^C::a, ^^Option)[0]:].value);
static_assert(![:annotations_of_with_type(^^C::b, ^^Option)[0]:].value);

int main() {}

Смотри также

получает аннотации, применяемые к отражённой сущности
(функция)
проверяет, представляет ли отражение аннотацию
(функция)
получает отражение константного значения отражённой сущности
(функция)
(C++26)
получает отражение типа отражённой сущности
(функция)