https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127487

            Bug ID: 127487
           Summary: __builtin_is_virtual_base_of reports a non-virtual
                    base reached through a virtual base as virtual
           Product: gcc
           Version: 17.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: bic60176 at gmail dot com
  Target Milestone: ---

struct A {};
struct B : A {};
struct C : virtual B {};

static_assert(__builtin_is_virtual_base_of(B, C));
static_assert(!__builtin_is_virtual_base_of(A, C));

g++ -std=c++26 -fsyntax-only test.cc

Actual: the second assertion fails because GCC reports A as a virtual base of
C.
Expected: only B is a virtual base. A is inherited non-virtually by B.

Reply via email to