std::meta::is_virtual

来自cppreference.com
< cpp | meta
在标头 <meta> 定义
consteval bool is_virtual( std::meta::info r );
(C++26 起)

如果 r 表示虚成员函数,或表示直接基类关系 (B, D) 且其中 BD 的虚基类,则返回 true,否则返回 false

参数

r - 一个反射值

返回值

如果 r 表示虚成员函数,或表示虚基类 B 与派生类 D 之间的直接基类关系,则为 true,否则为 false

示例

#include <meta>

struct Base
{
    virtual void f();
};

struct Derived : public virtual Base
{
    void f(); // 覆盖 Base::f
    void g(); // 非虚
};

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() {}

参阅

Template:cpp/meta/dsc is baseTemplate:cpp/meta/dsc is polymorphic type
检查反射是否表示覆盖了其他成员函数的成员函数
(函数) [编辑]
检查反射是否表示函数
(函数) [编辑]
检查类型是否为多态类类型
(类模板) [编辑]