Namespaces
Variants

std::meta::is_virtual

Von de.cppreference.net
< cpp | meta
 
 
 
Reflexionsbibliothek
 
Reflexionstypen und -abfragen
Reflexionsabfragen
Reflexionslayoutabfragen
Typeigenschaften
Typeigenschaftsabfragen
 
Definiert in der Headerdatei <meta>
consteval bool is_virtual( std::meta::info r );
(seit C++26)

Gibt true zurück, wenn r eine virtuelle Memberfunktion oder eine direkte Basisklassenbeziehung (B, D) darstellt, für die B eine virtuelle Basisklasse von D ist. Ansonsten wird false zurückgegeben.

Parameter

r - ein Reflexionswert

Rückgabewert

true r, wenn eine virtuelle Memberfunktion oder eine direkte Basisklassenbeziehung zwischen der virtuellen Basisklasse B und der abgeleiteten Klasse Dfalse darstellt; ansonsten

.

#include <meta>

struct Base
{
    virtual void f();
};

struct Derived : public virtual Base
{
    void f(); // overrides Base::f
    void g(); // non-virtual
};

static_assert(std::meta::is_virtual(^^Base::f));
static_assert(std::meta::is_virtual(^^Derived::f));
static_assert(!std::meta::is_virtual(^^Derived::g));

constexpr auto ctx = std::meta::access_context::current();
constexpr std::meta::info base = std::meta::bases_of(^^Derived, ctx)[0];
static_assert(std::meta::is_virtual(base));

int main() {}

Diesen Code ausführen

Vorlage:cpp/meta/dsc is polymorphic type
prüft, ob eine Reflexion eine Memberfunktion darstellt, die eine andere Memberfunktion überschreibt
(Funktion)
prüft, ob eine Reflexion eine Funktion darstellt
(Funktion)
(C++26)
prüft, ob eine Reflexion eine direkte Basisklassenbeziehung
darstellt (Funktion)
prüft, ob ein Typ ein polymorpher Klassentyp ist
(Klassenvorlage)