This is a rather big change to pretty much everything here, including
some minor changes that were just required along the way. It's probably
by no means perfect, but this should work more or less for now, but
should be taken with a grain of salt.
`requires` is a keyword in C++20.
Despite this written in C++17 as of now, some editors and
linters may handle it like a keyword.
This adds to the commit from before.