Namespaces
Variants

std::meta::is_virtual

Материал из ru.cppreference.net
< cpp | meta
 
 
 
Библиотека рефлексии
Запросы доступности элементов
Идентификация областей видимости
Запросы элементов рефлексии
Рефлексия аннотаций
Извлечение значения
Подстановка рефлексии
Рефлексия результата выражения
Генерация определения класса

Первичные категории типов
Составные категории типов
Свойства типов ➜
Отношения типов
 
Типы и запросы рефлексии
Запросы рефлексии
Запросы компоновки рефлексии
Свойства типов
Запросы свойств типов
 
Определён в заголовке <meta>
consteval bool is_virtual( std::meta::info r );
(начиная с C++26)

Возвращает true, если r представляет собой виртуальную функцию-член или связь с непосредственным базовым классом (B, D), для которой B является виртуальным базовым классом по отношению к D. В противном случае возвращает false.

Параметры

r - значение рефлексии

Возвращаемое значение

true true, если r представляет виртуальную функцию-член или связь с непосредственным базовым классом между виртуальным базовым классом B и производным классом D; в противном случае false 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)
проверяет, представляет ли рефлексия связь с непосредственным базовым классом
(функция)
проверяет, является ли тип полиморфным типом класса
(шаблон класса)