KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q243451: INFO: C++ Standard Noncompliance Issues with Visual C++ .Net

Article: Q243451
Product(s): Microsoft C Compiler
Version(s): 6.0
Operating System(s): 
Keyword(s): kbCompiler kbLangCPP kbVC600 kbGrpDSVCCompiler
Last Modified: 04-MAY-2002

-------------------------------------------------------------------------------
The information in this article applies to:

- Microsoft Visual C++, 32-bit Enterprise Edition, version 6.0 
- Microsoft Visual C++, 32-bit Professional Edition, version 6.0 
- Microsoft Visual C++, 32-bit Learning Edition, version 6.0 
- Microsoft Visual C++.NET (2002) 
-------------------------------------------------------------------------------

SUMMARY
=======

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

MORE INFORMATION
================

In the following list the relevant standard section is given in parenthesis.
Where an article link is provided, please refer to the article for more
information.

- Covariant return types (10.3.5) not supported.

  Q240862 BUG: C2555 On Virtual Functions with Covariant Return Types

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

  Q240869 BUG: C2667 and C2668 on Partial Ordering of Function Templates

- Koenig lookup (3.4.2) not fully supported.

  Q242190 BUG: Full Koenig Lookup Works only for operators

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

  Q240871 BUG: Explicitly Specified Template Functions Not Overloaded Correctly

- Class template partial specializations (14.5.4) not supported.

  Q240866 BUG: C2989 and C2988 on Class Template Partial Specializations

- Out-of-class-definition for member template classes and functions (14.5.2)
  not supported.

  Q241949 BUG: C2059 on Out-of-class Definition of Member Templates

- Template Template-parameters (14.1) not supported.

  Q241940 BUG: C2954 on using class template as template parameter

- Export keyword for templates (14, 14.7.2, 14.7.3) not supported.

  Q239436 PRB: LNK2001 on Template Member Functions

- Function Try Block Syntax (15) not supported.

  Q241706 BUG: C2123 on Function Try Block Syntax

- uncaught_exception() (18.6.4) not implemented.

  Q242192 BUG: uncaught_exception() Always Returns False

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

  Q241569 BUG: C2258 and C2252 on in Place Initialization of Static Const
  Members

- C library functions not in standard namespace (17.3.1.2).

  Q243444 BUG: CSTDLIB Does Not Define the Namespace STD

- Scope of variable declared in the for loop initialization (6.5.3) not as per
  standard.

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

Additional query words:

======================================================================
Keywords          : kbCompiler kbLangCPP kbVC600 kbGrpDSVCCompiler 
Technology        : kbVCsearch kbAudDeveloper kbVC600 kbVC32bitSearch kbVCNET
Version           : :6.0
Issue type        : kbinfo

=============================================================================

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1986-2002.