IBM XL C/C++ 13.1 supports =default/=delete, constexpr, nullptr
XL C/C++ and AIX and Linux is now available:
XL C/C++ for AIX and Linux, V13.1 Now Released!
We're happy to announce the release of the XL C/C++ for AIX, V13.1 and XL C/C++ for Linux, V13.1 compilers! The V13.1 release delivers POWER8 exploitation and new compiler and language features.
From the announcement details:
IBM® XL C/C++ for Linux™ is a standards-based, high performance C/C++ compiler with advanced optimizing features. XL C/C++ for Linux, V13.1 delivers a number of new features and enhancements:
- Exploitation of the latest IBM POWER8™ architecture
- Support for additional features in C11 and C++11, the current standards for the C and C++ programming languages
- Partial support for the OpenMP 4.0 industry specification
- Compile and runtime performance improvements
- Additional performance options
- New program diagnostics and error detection features
...
C++11 programming standard
C++11 is the latest standard for the C++ programming language, published as ISO/IEC 14882:2011. With V13.1, partial support for the C++11 standard continues with the implementation of the following features:
Defaulted and deleted functions
This feature introduces two new forms of function declarations to define explicitly defaulted functions and deleted functions. For the explicitly defaulted functions, the compiler generates the default implementations, which are more efficient than manually programmed implementations. The compiler disables the deleted functions to avoid calling unwanted functions.
You can use the
-qlanglvl=defaultanddeleteoption to enable this feature.Generalized constant expressions
The generalized constant expressions feature extends the set of expressions permitted within constant expressions. The implementation of this feature in XL C/C++ V12.1 was a partial implementation of what is defined in the C++11 standard. In this release, enhancements are made to support user-defined
constexprobjects andconstexprpointers or references toconstexprfunctions and objects.You can use the
-qlanglvl=constexproption to enable this feature.The nullptr keyword
This feature introduces
nullptras a null pointer constant. Thenullptrconstant can be distinguished from integer0for overloaded functions. The constants of0andNULLare treated as the integer type for overloaded functions, whereasnullptrcan be implicitly converted to only the pointer type, pointer-to-member type, andbooltype.You can use the
-qlanglvl=nullptroption to enable this feature.

There was a very strong C++ track on
Here's an experience report about using Boost's graph support in an existing game app, with some notes about Boost Concepts: