BUG: C2143 When Referencing a Class Template Imported from Another Namespace (263630)



The information in this article applies to:

  • 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 Q263630

SYMPTOMS

If you try to reference from one namespace a class template that has been imported from another namespace by means of a using declaration or directive, you may receive the following error message:
Test.cpp(11) : error C2143: syntax error : missing ';' before '<'
Test.cpp(11) : error C2143: syntax error : missing ';' before '<'
					

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 sample code demonstrates the bug:
// Test.cpp
// compiler option needed: none
namespace N1 {
template <class T> struct X {};
class Y{};
}

namespace N2 {
using N1::X; 
using N1::Y;
}

N2::X<int> x1;  // Syntax Error C2143
N2::Y y1;       // Compiles Fine
				

Modification Type:MinorLast Reviewed:7/5/2005
Keywords:kbBug kbCompiler kbCPPonly kbtemplate KB263630