Upgrade to C++20
I think we could update to the C++ 20 standard. While it is not completely implemented yet, there are some niceties which are implemented on all of the major compilers (cf. https://en.cppreference.com/w/cpp/compiler_support )
Some nice things added would be:
designated initalizers
struct A { int x; int y; int z; };
A b{.x = 1, .z = 2}; // ok, b.y initialized to 0
operator==
default It is possible to have a defaulted opeartor==
for value-types. This saves (potentially a lot of) boilerplate code.
helper-functions
- Using
contains
to check whether an element in a map std::string::starts_with/ends_with
-
std::ssize
to get size of container as signed type (no warning for comparison between signed/unsigned)