Help and Support

Article ID: 243451 - Last Review: October 21, 2005 - Revision: 3.0

C++ standard noncompliance issues with Visual C++ .NET

This article was previously published under Q243451
Expand all | Collapse all

SUMMARY

This article gives a list of the known standard noncompliance issues with Visual C++ 6.0.

MORE INFORMATION

In the following list, the relevant standard section is given in parentheses. Where an article link is provided, please refer to the article for more information.
  • Covariant return types (10.3.5) not supported.
    240862  (http://support.microsoft.com/kb/240862/ ) FIX: C2555 On virtual functions with covariant return types
  • Partial ordering of template functions (14.5.5.2) not supported.
    240869  (http://support.microsoft.com/kb/240869/ ) BUG: C2667 and C2668 on partial ordering of function templates
  • Koenig lookup (3.4.2) not fully supported.
    242190  (http://support.microsoft.com/kb/242190/ ) BUG: Full Koenig lookup works only for operators
  • Template arguments must be deduced for function templates (14.8.1).
    240871  (http://support.microsoft.com/kb/240871/ ) BUG: Explicitly specified template functions not overloaded correctly
  • Class template partial specializations (14.5.4) not supported.
    240866  (http://support.microsoft.com/kb/240866/ ) BUG: ERROR C2989 and C2988 on class template partial specializations
  • Out-of-class-definition for member template classes and functions (14.5.2) not supported.
    241949  (http://support.microsoft.com/kb/241949/ ) BUG: C2059 error on out-of-class definition of member templates
  • Template Template-parameters (14.1) not supported.
    241940  (http://support.microsoft.com/kb/241940/ ) BUG: C2954 error when using class template as template-parameter
  • Export keyword for templates (14, 14.7.2, 14.7.3) not supported.
    239436  (http://support.microsoft.com/kb/239436/ ) You receive a LNK2001 error message when you use the template member functions
  • Function Try Block Syntax (15) not supported.
    241706  (http://support.microsoft.com/kb/241706/ ) BUG: Compiler error C2143 on function-try-block syntax
  • uncaught_exception() (18.6.4) not implemented.
    242192  (http://support.microsoft.com/kb/242192/ ) BUG: The uncaught_exception C Run-Time function always returns false
  • In place initialization static const members (9.2) not supported.
    241569  (http://support.microsoft.com/kb/241569/ ) Error C2258 and error C2252 occur if you try to perform in-place initialization of static const integral member data in Visual C++
  • C library functions not in standard namespace (17.3.1.2).
    243444  (http://support.microsoft.com/kb/243444/ ) You receive a C2653 or C2039 error message when you try to reference a function from the STD C++ library
  • Scope of variable declared in the for loop initialization (6.5.3) not as per standard.
    167748  (http://support.microsoft.com/kb/167748/ ) PRB: Variable scope in for-statement extends beyond loop
  • Function exception specifiers (15, 15.4) other than throw() are parsed but not used. Example:
    void f() throw(int); // parsed but not used   
    void g() throw();    // parsed and used   
    					


  • Alternative operators like and ,and_eq, bit and etc are not implemented (2.11). But you can get the same behavior by including iso646.h

REFERENCES

For more information, see the ANSI/ISO C++ Standard.

APPLIES TO
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Visual C++ .NET 2002 Standard Edition
Keywords: 
kbinfo kblangcpp kbcompiler KB243451

Article Translations