Microsoft KB Archive/133071

= FIX: Exception Specification in Template causes C2961 Error =

Article ID: 133071

Article Last Modified on 7/5/2005

-

APPLIES TO


 * Microsoft Visual C++ 5.0 Learning Edition
 * Microsoft Visual C++ 2.0 Professional Edition
 * Microsoft Visual C++ 2.1
 * Microsoft Visual C++ 6.01 Professional Edition
 * Microsoft Visual C++ 4.0 Professional Edition
 * Microsoft Visual C++ 4.1 Subscription

-



This article was previously published under Q133071



SYMPTOMS
When you use an exception specification in a class or function template, the following error occurs:

error C2961: syntax error : 'throw' : unexpected token in template declaration



RESOLUTION
Remove the exception specification from the function declaration and definition. By design, it is not supported.



STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This bug was corrected in Visual C++ version 5.0.



MORE INFORMATION
The use of exception specifications is not supported in this version of Microsoft C++. However, you would expect the compiler to generate the following warning instead of an error:

warning C4290: C++ Exception Specification ignored

This level 4 warning is generated as expected when using an exception specification in a non-templated class or function.

Sample Code to Generate Error C2961 and Demonstrate Problem
/* Compile options needed: (none) */   template    class C1 { public: C1; void fn throw;  // C2961 error - to work around, remove "throw" };

template   void C1::fn throw  // C2961 error - to work around, remove "throw" {}

Sample Code to Generate Warning C4290 and Demonstrate Resolution
/* Compile options needed: /W4 */   class C2 { public: C2; void fn throw; // compiler correctly generates C4290 warning };

void C2::fn throw  // compiler correctly generates C4290 warning {}

Additional query words: 9.0 9.00 9.1 9.10 9.2 9.20

Keywords: kberrmsg kbbug kbfix kblangcpp kbvc500fix kbcode KB133071

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.