Draft: Introduce c++20 concepts
(This MR is for experimenting with C++20 concepts and far from ready to be merged)
Summary
Replace the C++17 concept-workarounds Dune::Concept::models<...>
by proper c++20 concepts and replace all enable_if
SFINAE statements by requires
clauses.
Discussion
- Tested locally with clang-16. We need a proper toolchain for more recent compilers supporting concepts.
- I don't see any improvement of compile-times by this change in code
- The definition of a basis-tree in terms of concepts is difficult, since we need recursion that is not allowed in concept definitions. Any ideas?
Edited by Simon Praetorius