While working on some tests recently, I ended up writing the following test case to exercise inheriting constructors from virtual base classes. For both D1 and D2, the constructors are inherited from an immediate base class. I think it makes sense to reject the declaration of d2 since the D2 constructors will attempt to invoke B's deleted default constructor. But, there is implementation divergence regarding the declaration of d1. Gcc bug?