std::meta::is_virtual
From cppreference.com
| Defined in header <meta>
|
||
consteval bool is_virtual( std::meta::info r );
|
(since C++26) | |
Returns true if r represents a virtual member function or a direct base class relationship (B, D) for which B is a virtual base class of D. Otherwise returns false.
Parameters
| r | - | a reflection value |
Return value
true if r represents a virtual member function or a direct base class relationship between virtual base class B and derived class D; otherwise false.
Example
Run this code
#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() {}
See also
Template:cpp/meta/dsc is polymorphic type(C++26) |
checks if reflection represents a member function that overrides another member function (function) |
(C++26) |
checks if reflection represents a function (function) |
(C++26) |
checks if reflection represents a direct base class relationship (function) |
(C++11) |
checks if a type is a polymorphic class type (class template) |