C++23 on (bringing niceties like monadic operations on std::optional and std::ranges::to)
Use target_sources and HEADERS file set in CMakeLists
Use Clang 17 in CI because:
a. Clang 15 is too old and cannot compile ranges code used in libstdc++ 13
b. We probably don't want to switch Clang pipeline it to libc++, because it's not the default for most Linux distros
c. Clang 16 is not available in Ubuntu 22.04, neither in official LLVM repos.
Be mindful that switching to C++23 may break some existing code (not badly; an example of a needed fix can be seen right here in 48d874f).
std::optional
andstd::ranges::to
)target_sources
andHEADERS
file set in CMakeListsBe mindful that switching to C++23 may break some existing code (not badly; an example of a needed fix can be seen right here in 48d874f).