PRB: C2059 When Declaring Friend Template Functions in a Class (140605)
The information in this article applies to:
- Microsoft Visual C++, 32-bit Professional Edition 4.0
- Microsoft Visual C++, 32-bit Learning Edition 4.0
This article was previously published under Q140605 SYMPTOMS
Attempting to declare a friend template function in a class definition may
result in the following errors:
error C2059: syntax error: 'template'
error C2238: unexpected token(s) preceding ';'
CAUSE
This is a relatively new language feature that is currently not supported
by the Visual C++ 4.0 compiler. For example, the following code will
generate the errors noted above.
Sample Code
/* Compile options needed: none
*/
class A;
template <class T> void f(T, A *a) { a->x; }
class A
{
private:
int x;
template <class T> friend void f(T, A*);
};
int main(void)
{
A a;
f(5, &a);
f(1.5, &a);
return 0;
}
STATUS
This behavior is by design.
Modification Type: | Minor | Last Reviewed: | 7/5/2005 |
---|
Keywords: | kbCompiler kbprb KB140605 |
---|
|