std::define_static_object
Von de.cppreference.net
| Definiert in Header <meta>
|
||
template< class T >
consteval const remove_cvref_t<T>* define_static_object( T&& t );
|
(seit C++26) | |
Befördert einen Wert in den statischen Speicher.
Äquivalent zu:
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();
}
Parameter
| t | - | ein Wert von strukturellem Typ |
Rückgabewert
Ein Zeiger auf das Vorlagenparameterobjekt mit dem Wert t.
Hinweise
Als Vorlagenparameterobjekt hat das resultierende Objekt eine statische Speicherdauer. Vorlagenargument-äquivalente Werte entsprechen demselben Objekt.
Das resultierende Objekt ist ein potenziell nicht eindeutiges Objekt, wenn std::remove_cvref_t<T> ein Skalartyp ist.
Falls t ein Vorlagenparameterobjekt ist, zeigt das Ergebnis auf dasselbe Objekt.
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_define_static |
202506L |
(C++26) | std::define_static_object
|
Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
Siehe auch
(C++26) |
befördert ein Compile-Time-Array in den statischen Speicher und gibt einen span des statischen Arrays zurück (Funktionstemplate) |
(C++26) |
befördert einen Compile-Time-String in den statischen Speicher und gibt einen Zeiger auf das erste Zeichen des statischen Strings zurück (Funktionstemplate) |
(C++26) |
gibt eine Reflection zurück, die einen Wert oder ein Vorlagenparameterobjekt repräsentiert, geeignet zur Verwendung als konstantes Vorlagenargument (Funktionstemplate) |