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:
- 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:
- Clang - C Programming Language Status
- Clang - C Defect Report Status
Clang - C++ Programming Language Status
Clang - C++ Defect Report Status
libc++ C++17 Status (Refer to the "libc++ C++17
Status" section in the libc++ documentation)
libc++ C++20 Status (Refer to the "libc++ C++20
Status" section in the libc++ documentation)
IBM Open XL C/C++ for AIX 17.1.3 has the
following limitations to the C++ language standard support:
- The function of
cuchar.handuchar.his not available without an update to the AIX®uchar.hheader. - C++17 parallel algorithms are not supported.
- The parameter types can be
doubleandlong doubleforstd::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_getfunction is not available without an update to thetime.hheader 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 oflibc++for AIX, with the exceptions that are noted in the following LLVMlibc++release notes: