Namespaces
Variants

std::meta::reflect_constant_array

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

Основные категории типов
Составные категории типов
Свойства типов ➜
Отношения типов
 
Типы и запросы отражения
Запросы отражения
Запросы размещения отражения
Свойства типов
Запросы свойств типов
 
Определено в заголовке <meta>
template< ranges::input_range R >
consteval std::meta::info reflect_constant_array( R&& r );
(начиная с C++26)

Возвращает отражение, представляющее объект-массив, элементы которого являются соответствующими элементами r.

Результирующий объект является объектом параметра шаблона: он имеет статическую продолжительность хранения, и диапазоны с эквивалентными аргументам шаблона содержимым соответствуют одному и тому же объекту.

Если размер r не равен нулю, результирующий объект-массив является потенциально не уникальным объектом.

Пусть U будет ranges::range_value_t<R> и T будет std::remove_all_extents_t<U>.

Программа считается некорректной, если выполняется любое из следующих условий:

Параметры

r - input_range

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

Если размер r не равен нулю, отражение, представляющее объект параметра шаблона типа const T[N] (где N — размер r). Каждый элемент объекта параметра шаблона эквивалентен аргументу шаблона:

  • std::meta::reflect_constant_array(*it) если U является типом массива;
  • std::meta::reflect_constant(static_cast<T>(*it)) в противном случае;

где it — итератор, указывающий на соответствующий элемент r.

В противном случае (размер r равен нулю) — отражение, представляющее объект параметра шаблона типа const std::array<T, 0>, инициализированный значением {}.

Исключения

Выбрасывает любые исключения, выброшенные:

  • операцией над r или над итераторами или дозорными r;
  • любым аргументом std::meta::reflect_constant или любым вызовом std::meta::reflect_constant_array, описанным выше.

Выбрасывает std::meta::exception, если любой вызов std::meta::reflect_constant завершился бы исключением.

Примечания

Результат std::meta::reflect_constant_array подходит для использования с std::meta::substitute. Если вызывающему коду требуется std::span статического массива, а не значение отражения, обычно более подходящим является std::define_static_array.

Пример

Смотри также

переводит массив времени компиляции в статическую память, возвращая span статического массива
(шаблон функции)
переводит строку времени компиляции в статическую память, возвращая отражение, представляющее статическую строку
(шаблон функции)
возвращает отражение, представляющее значение или объект параметра шаблона, подходящее для использования в качестве константного аргумента шаблона
(шаблон функции)