https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68903
--- Comment #2 from trzeci <spam at trzeci dot pl> --- Simpler test: struct A { int a = 3; }; struct B : public A {}; struct C : public virtual B { int c = a; }; #include <iostream> int main() { C c; std::cout << c.a << " " << c.c << std::endl; return 0; } outputs: 3 0 instead of: 3 3 tested on 8.4.0