kamping icon indicating copy to clipboard operation
kamping copied to clipboard

C++20 Wishlist

Open kurpicz opened this issue 2 years ago • 5 comments

Why a C++20 Whishlist?

Currently, KaMPI.ng is limited by the compilers widely available at HPC clusters. Since we want to target all major compilers usually used at these clusters, we have to wait for the Intel compiler to support most of the C++20 features, before we start using them. However, during development, we oftentimes think that using a specific C++20 feature would reduce development time or simply make the code more expressive.

This issue should be extended whenever we stumble over such a feature. I think it is the best to simply edit this issue and use the comments for discussion.

The List

Concepts

We should use concepts wherever possible, e.g., for different buffer types. This allows us to better specify different template parameters and would make the code way more expressive. The same holds for the parameters passed to the wrapped MPI functions. Here, template<Parameters... parameters> looks better than template<typename... Args>.

Constexpr Algorithms

With C++20, we get access to a lot constexpr algorithms and data structures, e.g., std::vector. We should use them to make our named parameter stuff (selection and checking) more expressive and easier to extend and/or debug.

kurpicz avatar Mar 24 '22 16:03 kurpicz