Namespaces
Variants

std::define_static_object

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

Основные категории типов
Составные категории типов
Свойства типов ➜
Отношения типов
 
Типы и запросы отражения
Запросы отражения
Запросы компоновки отражения
Свойства типов
Запросы свойств типов
 
Определено в заголовке <meta>
template< class T >
consteval const remove_cvref_t<T>* define_static_object( T&& t );
(начиная с C++26)

Продвигает значение в статическую память.

Эквивалентно:

using U = std::remove_cvref_t<T>;
if constexpr (std::meta::is_class_type(^^U) || std::meta::is_union_type(^^U))
{
    std::meta::info obj = std::meta::reflect_constant(std::forward<T>(t));
    return std::addressof(std::meta::extract<const U&>(obj));
}
else if constexpr (std::meta::is_array_type(^^U))
{
    std::meta::info obj = std::meta::reflect_constant_array(std::forward<T>(t));
    return std::addressof(std::meta::extract<const U&>(obj));
}
else
{
    return std::define_static_array(std::span(std::addressof(t), 1)).data();
}

Параметры

t - значение структурного типа

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

Указатель на объект параметра шаблона со значением t.

Примечания

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

Результирующий объект является потенциально не уникальным объектом если std::remove_cvref_t<T> является скалярным типом.

Если t является объектом параметра шаблона, результат указывает на тот же объект.

Проверки возможности макрос Значение Стандарт Возможность
__cpp_lib_define_static 202506L (C++26) std::define_static_object

Пример

См. также

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