ICX Changes Default C++ Language Standard to C++17 with 2023.0 Release

ID 761968
Updated 11/28/2022
Version Latest



Summary of Change

With 2023.0 release, ICX/ICPX compiler is switching to C++17 from C++14 as the default standard while doing C++ compilation. For SYCL users using DPCPP or icx/icpx -fsycl the default standard is already C++17 and will not be impacted by this change.

Summary of the potentially breaking changes in C++17 is as follows:

Language features removed in C++17:

Language features deprecated in C++17:

Expected Compilation Errors

When codes using features removed in C++17 are compiled with compiler version 2023.0 or later, they may fail to compile with errors as shown below

 error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]

 error: ISO C++17 does not allow dynamic exception specifications [-Wdynamic-exception-spec]

Developers are recommended to modify their code to make it C++17 standards compliant or can compile with the option -std=c++14 as a temporary workaround. 

Note: Intel® Compiler Classic(icc/icpc) still defaults to C++14.