Microsoft KB Archive/168934

From BetaArchive Wiki
Knowledge Base


BUG: You may receive multiple errors when you compile the Standard C++ Library headers with the /Za switch in Visual C++

Article ID: 168934

Article Last Modified on 9/2/2005



APPLIES TO

  • The Standard C++ Library, when used with:
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++ 6.0 Standard Edition



This article was previously published under Q168934

SYMPTOMS

If you use the /Za switch (Disable Language Extensions) when compiling the Standard C++ Library headers, it causes multiple compiler errors. For example:

   cl /Za /c /GX /Tp"iosfwd"
                

Causes the following compiler errors:

iosfwd(132) : error C2906: C++ language change: to explicitly specialize class template 'char_traits' use the following syntax - template<> struct char_traits<unsigned short> ...

iosfwd(171) : error C2906: C++ language change: to explicitly specialize class template 'char_traits' use the following syntax - template<> struct char_traits<char> ...

Examples of other header files known to cause multiple compiler errors like C2838, C2146, and C2501 are: <utility>, <iterator>, <xstring>, <functional>, and <limits>.

RESOLUTION

Do not use the compiler option /Za (Disable Language Extensions) when compiling the Standard C++ Library headers.

STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article.

This problem was corrected in Microsoft Visual C++ .NET.


Keywords: kberrmsg kbtshoot kbbug kbfix kbnoupdate kblangcpp kbcpponly kbcompiler KB168934