Skip to content

Migrate project to C++17 standard and reduce complexity #86

@joshbainbridge

Description

@joshbainbridge

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions