std::define_static_object - cppreference.com
来自cppreference.com
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 的模板形参对象的指针。
注解
作为模板形参对象,结果对象具有静态存储期。[[cpp/language/template parameters#模板实参等价性|模板实参等价}}的值对应同一个对象。
如果 std::remove_cvref_t<T> 是标量类型,则结果对象是一个可能非唯一的对象。
如果 t 本身就是一个模板形参对象,则结果指向相同对象。
| 功能特性测试宏 | 值 | 标准 | 功能特性 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
__cpp_lib_define_static |
202506L |
(C++26) | std::define_static_object
示例
参阅
|