Extensions for C++11 compatibility

Note:

IBM® supports selected features of C++11, known as C++0x before its ratification. IBM will continue to develop and implement the features of the new standard. The implementation of the language level is based on IBM's interpretation of this standard. Until IBM's implementation of all the C++11 features are complete, including the support of a new C++11 standard library, the implementation may change from release to release. IBM makes no attempt to maintain compatibility, in source, binary, or listings and other compiler interfaces, with earlier releases of IBM's implementation of the new C++11 features and therefore they should not be relied on as a stable programming interface.

The following features are part of a continual phased release process leading towards full compliance with C++11. They can be enabled by the LANGLVL(*EXTENDED0X) option.

Table 1. IBM ILE C++ language extensions for compatibility with C++11
Language feature Discussed in:
Auto type deduction The auto type specifier (C++11)
C99 preprocessor features adopted in C++11 C99 preprocessor features adopted in C++11 (C++11)
Decltype The decltype(expression) type specifier (C++11)
Defaulted and deleted functions Explicitly defaulted functions (C++11)

Deleted functions (C++11)

Delegating constructors Delegating constructors (C++11)
Explicit conversion operators Explicit conversion operators (C++11)
Explicit instantiation declarations Explicit instantiation (C++ only)
Extended friend declarations Friends (C++ only)
Generalized constant expressions Generalized constant expressions (C++11)
Inline namespace definitions Inline namespace definitions (C++11)
Nullptr Null pointers
Reference collapsing Reference collapsing (C++11)
Right angle brackets Class templates (C++ only)
Rvalue references References (C++ only)
Scoped enumerations Enumerations
static_assert static_assert declaration (C++11)
Trailing return type Trailing return type (C++11)
Variadic templates Variadic templates (C++11)
Note: You can also use the LANGLVL(*EXTENDED) option to enable the explicit instantiation declarations feature.
Related information
  • LANGLVL in the ILE C/C++ Compiler Reference