Microsoft KB Archive/263633

= BUG: Error C2946 on Explicit Instantiation of Imported Templates =

Article ID: 263633

Article Last Modified on 7/5/2005

-

APPLIES TO


 * Microsoft Visual C++ 6.0 Enterprise Edition
 * Microsoft Visual C++ 6.0 Professional Edition
 * Microsoft Visual C++ 6.0 Standard Edition

-



This article was previously published under Q263633



SYMPTOMS
If you try to perform explicit instantiation of a template class or function imported from another namespace by means of a using declaration or using directive, you may receive the following error message:

Test.cpp(8) : error C2946: explicit instantiation; 'class ?$A@H' is not a template-class specialization



RESOLUTION
To work around this problem, qualify the template name with the name of the namespace in which the template is defined.



STATUS
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 sample code demonstrates the bug: // Test.cpp // Compiler option needed: none namespace N {

template  struct A { }; }

using namespace N;            // This does not work. using N::A;                   // This also does not work. template class A ;

// template class N::A ;  // This works.

Additional query words: &quot;Compiler Error&quot;

Keywords: kbbug kbtemplate kbcpponly kbpending kbcompiler KB263633

-

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

© Microsoft Corporation. All rights reserved.