You are currently offline, waiting for your internet to reconnect

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

This article was previously published under Q241949
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: 07/05/2005 20:22:00 - 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
  • kbbug kblangcpp kbcpponly kbcompiler KB241949