C++ standard noncompliance issues with Visual C++ .NET (243451)



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
  • Microsoft Visual C++ .NET (2002)

This article was previously published under Q243451

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 FIX: C2555 On virtual functions with covariant return types

  • Partial ordering of template functions (14.5.5.2) not supported.

    240869 BUG: C2667 and C2668 on partial ordering of function templates

  • Koenig lookup (3.4.2) not fully supported.

    242190 BUG: Full Koenig lookup works only for operators

  • Template arguments must be deduced for function templates (14.8.1).

    240871 BUG: Explicitly specified template functions not overloaded correctly

  • Class template partial specializations (14.5.4) not supported.

    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 BUG: C2059 error on out-of-class definition of member templates

  • Template Template-parameters (14.1) not supported.

    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 You receive a LNK2001 error message when you use the template member functions

  • Function Try Block Syntax (15) not supported.

    241706 BUG: Compiler error C2143 on function-try-block syntax

  • uncaught_exception() (18.6.4) not implemented.

    242192 BUG: The uncaught_exception C Run-Time function always returns false

  • In place initialization static const members (9.2) not supported.

    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 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 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.

Modification Type:MajorLast Reviewed:10/21/2005
Keywords:kbCompiler kbinfo kbLangCPP KB243451