http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43313
--- Comment #8 from Peter Bergner <bergner at gcc dot gnu.org> 2012-11-07 23:39:56 UTC --- ...and the reduced test case I used for the above. Does any of the above make sense for anyone? class CObject {}; class CMsgProc:virtual public CObject { }; template < typename ValueType > class CTypesafeValue { }; class CRemapPidIndex:public CTypesafeValue < short unsigned int > {}; class ICarousel { virtual ~ ICarousel (); }; class IPlayout { virtual ICarousel * CreateCarousel (CRemapPidIndex PidIndex) = 0; }; class CCarousel:public CMsgProc, public ICarousel { }; class CPlayout: public IPlayout { CCarousel *CreateCarousel (CRemapPidIndex PidIndex); }; CCarousel *CPlayout::CreateCarousel (CRemapPidIndex PidIndex) { }