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



The information in this article applies to:

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

This article was previously published under Q241949

SYMPTOMS

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

CAUSE

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.

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

Steps to Reproduce Behavior

The following code example demonstrates the error:
//test.cpp
// compiler option needed: none

template<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		
}


				

Modification Type:MinorLast Reviewed:7/5/2005
Keywords:kbBug kbCompiler kbCPPonly kbLangCPP KB241949