GodfatherofSoul <godfatherofsoul2004@xxxxxxxxx> writes: > I'm trying to migrate some Visual Studio code to gcc, but I'm getting errors > with some of our template usage: > > class ParentClass > { > public: > class NestedForwardDeclaration; > > template class SomeTemplateClass<NestedForwardDeclaration>; > > class NestedForwardDeclaration > { > ... > }; > > }; > > BTW, this is distilled down to the core cause of the problem, so you really > can't see the rationale for this convention. The complication error I get > is on the "template class.." line: > > error: expected `<' before 'class' > > Does anyone understand why this fails? Note that this same code compiles > and runs with the Microsoft compiler. The above test case (without the "...") fails because SomeTemplateClass is not a template. I'm not sure what you are trying to do in this code. If you are trying to do an explicit instantiation of a template, then you have to do the instantiation outside of ParentClass. You can't instantiate a template inside a class; I'm not even sure what that would mean. Ian