'identifier' : illegal type for non-type template parameter 'parameter'
You cannot declare a template with a structure or union argument. Use pointers to pass structures and unions as template parameters.
The following sample generates C2993:
struct MyStruct { int a;char b; }; template <class T, struct MyStruct S> // C2993 // try // template <class T, struct MyStruct * S> class CMyClass { }; void main() { }