Hi Dave, > I would think that I1::a() is not virtual because it is defined in the super class C1. What is going on here? I1::a was defined in super class C1 for the C1 half of the multiple inheritance (via C2::C1::I2::defined a), but the I2 half's (via C2::I2::I1::pure virtual a) a has not been concretely defined anywhere up that inheritance chain. HTH, --Eljay