Supported language levels

This topic describes the C/C++ programming language specifications that IBM Open XL C/C++ for AIX 17.1.3 supports.

C language specifications

  • ISO/IEC 9899:2017 (referred to as C17)1
  • ISO/IEC 9899:2011 (referred to as C11)1
  • ISO/IEC 9899:1999 (referred to as C99)
  • ISO/IEC 9899:1990 (referred to as C89)
Note:
  1. The compiler partially supports atomics and threads, which are optional C11 features.
C++ language specifications
  • ISO/IEC 14882:2020 (referred to as C++20) (experimental support)
  • ISO/IEC 14882:2017 (referred to as C++17)
  • ISO/IEC 14882:2014 (referred to as C++14)
  • ISO/IEC 14882:2011 (referred to as C++11)
  • ISO/IEC 14882:2003 (referred to as C++03)
  • ISO/IEC 14882:1998, the first official specification of the C++ language (referred to as C++98)
Note:

IBM® Open XL C/C++ adopts LLVM technology which leverages the Clang front-end and libc++ to provide C/C++ standard support. Subject to the C++ standard implementation status of the Clang/LLVM community, C++17 support and experimental C++20 features are available in this release.

The implementation of a language level might change with each release, as the implementation of C++ language and library features progress. The compatibility of language levels from release to release is subject to changes made by the Clang/LLVM community.

For additional details, refer to the following materials:
IBM Open XL C/C++ for AIX 17.1.3 has the following limitations to the C++ language standard support:
  • The function of cuchar.h and uchar.h is not available without an update to the AIX® uchar.h header.
  • C++17 parallel algorithms are not supported.
  • The parameter types can be double and long double for std::atomic<T> templates only when the compilation mode is 64-bit.
  • Functions enabled by the _LIBCPP_ENABLE_CXX17_REMOVED_FEATURES and _LIBCPP_ENABLE_CXX20_REMOVED_FEATURES macros are available as they are. IBM does not guarantee that these features will continue to be supported in future releases.
  • The C++11 sized deallocation feature is enabled only when -fsized-deallocation is in effect, which is not enabled by default.
  • The timespec_get function is not available without an update to the time.h header file in AIX 7.3 TL2.
  • The libc++ library for IBM Open XL C/C++ for AIX 17.1.3 is the same as the one for IBM Open XL C/C++ for AIX 17.1.1. The library is compatible with previous versions of libc++ for AIX, with the exceptions that are noted in the following LLVM libc++ release notes: