BUG: C2059 Error on Out-Of-Class Definition of Member Templates

This article was previously published under Q241949
This article has been archived. It is offered "as is" and will no longer be updated.
The following error message appears if you define a member template class or function outside the class:
error C2059: syntax error : ''template<''
error C2065: 'T' : undeclared identifier
The compiler does not support out-of-class definition of member template functions and classes. Please refer to the C++ Standard, section 14.5.2, for information on member templates.
Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

Steps to Reproduce Behavior

The following code example demonstrates the error:
//test.cpp// compiler option needed: nonetemplate<class T> class string {public:	template<class T2> int compare(const T2&);	template<class T2> string(const string<T2>& s) {}  // inline definition OK 	//  ...}; template <class T> template<class T2> int string<T>::compare(const T2& s)				// error C2059 and C2065 {	//  ...		// Out-of-class-definition		}				

Article ID: 241949 - Last Review: 12/05/2015 15:57:23 - Revision: 1.1

Microsoft Visual C++ 5.0 Enterprise Edition, Microsoft Visual C++ 5.0 Professional Edition, Microsoft Visual C++ 6.0 Enterprise Edition, Microsoft Visual C++ 6.0 Professional Edition, Microsoft Visual C++, 32-bit Learning Edition 6.0

  • kbnosurvey kbarchive kbbug kblangcpp kbcpponly kbcompiler KB241949