template 'identifier' requires a tag-name
A union, struct, class, or enum specifier following a template class lacks its own identifier.
Example
template <class T> class D struct; // error