| |
[The following information reflects version 4.6 of the C++ front end, which was released in March 2013.]
The front end accepts the C++ language as defined by the ISO/IEC 14882:2003 standard. It also accepts the C language as defined by the ISO/IEC 9899:1990 ("C89") and ISO/IEC 9899:1999 ("C99") standards and the "Embedded C" extensions of ISO/IEC TR 18037.
It also accepts almost all of the features in the recent ISO/IEC 14882:2011
("C++11") standard:
-
static_assert
-
auto type in a declaration
-
rvalue references
-
alias templates
-
variadic templates
-
decltype
-
scoped enums
-
defaulted and deleted functions
-
nullptr
-
trailing return types on functions, and use of this therein
-
lambda expressions
-
new-style SFINAE for template deduction
-
standard attributes, e.g., [[noreturn]]
-
explicit conversion functions
-
char16_t and char32_t data types, and U-form Unicode literals
-
additional type traits, e.g., __underlying_type
-
initializer lists
-
namespace association, or "inline namespace"
-
the noexcept specifier and operator
-
range-based for loops
-
opaque enumeration definitions
-
generation of implicit move constructors and move assignment operators
-
constexpr
-
Nonstatic data member initializers (NSDMIs)
-
unrestricted unions
-
delegating constructors
-
raw and UTF-8 string literals
-
ref-qualifiers that apply to this in member functions
...and the rest will be coming soon.
A complete list of C++11 features and the EDG releases in which they've
been implemented can be retrieved by clicking
here.
Accepting standard C++ and C is nice, but in the real world
hardly any programs are written in completely standard-conforming C++ or C.
The front end's "strict" standard C++ and C modes are useful
for running test suites and ensuring that a program contains no
nonstandard usage, but may be a bit too pedantic for everyday use.
Therefore, the front end also offers slightly more relaxed default modes
for C++ and C, and
compatibility modes for some of the most popular compilers' dialects:
-
A Microsoft C and C++ compatibility mode, which provides the extensions supported by the Microsoft Visual C++ compiler (through version 11.0, including the C++/CLI features), along with various undocumented features and bugs.
-
A GNU C and C++ compatibility mode, which provides the extensions supported by GCC (versions 3.2-4.7), along with various undocumented features and bugs. The compatibility is good enough that the front end can compile the Linux kernel and utilities.
-
A Sun C++ compatibility mode.
-
A cfront compatibility mode, which emulates the old AT&T cfront processor.

|