Cpp Standards Conformance

From Open Watcom

Revision as of 23:25, 18 November 2012; view current revision
←Older revision | Newer revision→
Jump to: navigation, search

When the commercial Watcom C++ compiler was first released as open source it was significantly behind in the area of standards conformance. The Open Watcom C++ project has evolved the compiler and its libraries considerably since then, but much work remains. It is our (ambitious) intention to bring the Open Watcom C++ compiler and library into conformance with the C++ 2011 standard. By skipping over the 1998 and 2003 standards we avoid having to worry about supporting those standards as distinct entities and we can use C++ 2011 features unconditionally in the library implementation (for example type_traits).

The purpose of this page is to document unimplemented features and to chart the progress towards C++ 2011 conformance. We break the work on standards conformance into the following sections.

  • The C++ Language — This refers to standards issues affecting the compiler itself and not the libraries. In some cases work on the libraries must wait until certain features in the language have been implemented. We do not typically try to work around language limitations in the library, instead preferring to update the compiler when necessary.
  • Open Watcom STL — Open Watcom's implementation of the C++ Standard Template Library. This includes most of the C++ library except for IOStreams and the C++ 2011 support mentioned below.
  • Modernizing IOStreams — Open Watcom's IOStream library is currently an "old-style" IOStream library. It needs to be overhauled.
  • C++ 2011 Libraries — We have started work on library components described in an earlier (2008) draft of the C++ 2011 standard. The final standard has now been published, however. We expect that most of our ongoing work is either still appropriate or easily updated to reflect the final standard.

Open Watcom C++ currently only supports a small subset of C++ 2011 language features and is still missing a few important features from C++ 1998. Many library components can only be partially updated to the new standard and must wait for significant compiler updates before a fully standard library can be provided.

Personal tools