std::meta::is_virtual
cppreference.net에서
| 헤더에서 정의됨 <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(C++26) |
확인합니다 만약 리플렉션이 다른 멤버 함수를 재정의하는 멤버 함수를 나타내는 (function) |
(C++26) |
확인합니다 만약 리플렉션이 함수를 나타내는 (function) |
(C++26) |
확인합니다 만약 리플렉션이 직접 기본 클래스 관계 (function) |
(C++11) |
확인합니다 만약 타입이 다형성 클래스 타입인지 (class template) |