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