Namespaces
Variants

std::meta::is_virtual

cppreference.net에서
< cpp | meta
 
 
 
리플렉션 라이브러리
 
리플렉션 타입 및 질의
리플렉션 질의
리플렉션 레이아웃 질의
타입 속성
타입 속성 질의
 
헤더에서 정의됨 <meta>
consteval bool is_virtual( std::meta::info r );
(C++26부터)

반환 true 만약 r 를 나타내는 가상 멤버 함수 또는 직접 기본 클래스 관계 (B, D) 에 대해 B 는 가상 기본 클래스 의 D입니다. 그렇지 않으면 반환 false.

매개변수

r - 리플렉션 값

반환값

true 만약 r 가상 멤버 함수를 나타내거나 직접 기본 클래스 관계 가상 기본 클래스 간의 B 와 파생 클래스 D; 그렇지 않으면 false.

예제

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

참조

Template:cpp/meta/dsc is polymorphic type
확인합니다 만약 리플렉션이 다른 멤버 함수를 재정의하는 멤버 함수를 나타내는
(function)
확인합니다 만약 리플렉션이 함수를 나타내는
(function)
(C++26)
확인합니다 만약 리플렉션이 직접 기본 클래스 관계
(function)
확인합니다 만약 타입이 다형성 클래스 타입인지
(class template)