Compiler Error C2903

'identifier' : symbol is neither a class template nor a function template

An attempt to force the explicit instantiation of something that is not a template generates this error. For example:

namespace N {
   template<class T> class X {};
   class Y {};
}
void g() {
   N::template Y y; // this generates error C2903
}