We would like to switch OpenQMC from C++14 to C++17 and raise the requirement for downstream projects. This will also impact the compatible VFX Reference Platforms.
This will remove a key bit of complexity where a user must decide if they want to install a header only, or a binary variant. We have both variants due to the lack of inlined variable definition in C++14, and so large hard coded arrays in OpenQMC (megabytes in size) can increase a project binary footprint if statically included via header files in many downstream compilation units. This can be avoided by opting for a non-header only variant of OpenQMC at install time.
C++17 introduces inlined variable declaration, and as a result removes the need for binary variant, as header only installs will no longer duplicate static arrays across compilation units.
We ideally want to complete this task before adding back a binary option for a C-ABI version of OpenQMC, as having both binary variants at the same time could lead to confusion.
Alongside the above, there are other benefits and niceties offered by C++17 that could be added to the project over time. Although we should be careful as to remain CUDA compatible.
We would like to switch OpenQMC from C++14 to C++17 and raise the requirement for downstream projects. This will also impact the compatible VFX Reference Platforms.
This will remove a key bit of complexity where a user must decide if they want to install a header only, or a binary variant. We have both variants due to the lack of inlined variable definition in C++14, and so large hard coded arrays in OpenQMC (megabytes in size) can increase a project binary footprint if statically included via header files in many downstream compilation units. This can be avoided by opting for a non-header only variant of OpenQMC at install time.
C++17 introduces inlined variable declaration, and as a result removes the need for binary variant, as header only installs will no longer duplicate static arrays across compilation units.
We ideally want to complete this task before adding back a binary option for a C-ABI version of OpenQMC, as having both binary variants at the same time could lead to confusion.
Alongside the above, there are other benefits and niceties offered by C++17 that could be added to the project over time. Although we should be careful as to remain CUDA compatible.