Having a brain fart... Is it possible to make something like this work?
template struct Foo { template struct Bar; }; template
As the previous posters explained, this is not possible. You can however move the nested template into a non-template base class:
struct FooBase { template struct Bar; } template struct Foo : public FooBase { }; struct FooBase::Bar<1> // specializing Bar { };