Namespaces
Variants

std::define_static_object

Von de.cppreference.net
< cpp | meta
 
 
 
Reflection-Bibliothek
 
Reflection-Typen und -Abfragen
Reflection-Abfragen
Reflection-Layout-Abfragen
Typeigenschaften
Typeigenschaftsabfragen
 
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

Siehe auch

befördert ein Compile-Time-Array in den statischen Speicher und gibt einen span des statischen Arrays zurück
(Funktionstemplate)
befördert einen Compile-Time-String in den statischen Speicher und gibt einen Zeiger auf das erste Zeichen des statischen Strings zurück
(Funktionstemplate)
gibt eine Reflection zurück, die einen Wert oder ein Vorlagenparameterobjekt repräsentiert, geeignet zur Verwendung als konstantes Vorlagenargument
(Funktionstemplate)