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.