'parameter' : illegal use of template type-parameter
Your code should use a function return type or the type of a user-defined conversion.
For example, the following code generates this error:
template<typename T> class X3 { T() { // C2764 } /* any of the following will work T f() { // works } operator T() { } */ }; void main(){}
Depending on what is intended, one way to fix this would be:
operator const T() const;