The codebase is built with `-std=c++23` (GCC 15 / apple-clang 17) but mostly written in pre-C++20 style. Don't do a mechanical sweep — pick concrete spots where a C++23 feature removes duplication, fixes a bug, or improves the API.
Where it pays off
Where it's not worth it
- `std::print` / `std::println` — we use spdlog everywhere; no win.
- Multidimensional subscript — no use case here.
- Sweeping `auto` → explicit return types or vice-versa — pure churn.
Acceptance
No standalone "modernize everything" PR. Each modernization is part of a refactor PR that already has a reason to touch that file.
The codebase is built with `-std=c++23` (GCC 15 / apple-clang 17) but mostly written in pre-C++20 style. Don't do a mechanical sweep — pick concrete spots where a C++23 feature removes duplication, fixes a bug, or improves the API.
Where it pays off
Where it's not worth it
Acceptance
No standalone "modernize everything" PR. Each modernization is part of a refactor PR that already has a reason to touch that file.