std::meta::reflect_constant_array
| Определено в заголовке <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>.
Программа считается некорректной, если выполняется любое из следующих условий:
Tне является структурным типом.Tне удовлетворяет copy_constructible.Uне является типом массива, иstd::is_constructible_v<T, ranges::range_reference_t<R>>ложно.
Параметры
| 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.
Пример
| Этот раздел неполон Причина: нет примера |
Смотри также
(C++26) |
переводит массив времени компиляции в статическую память, возвращая span статического массива (шаблон функции) |
(C++26) |
переводит строку времени компиляции в статическую память, возвращая отражение, представляющее статическую строку (шаблон функции) |
(C++26) |
возвращает отражение, представляющее значение или объект параметра шаблона, подходящее для использования в качестве константного аргумента шаблона (шаблон функции) |