During the review of indirect today the horror of all the c++17 ifdef’s to make up for the lack of concepts was everywhere. Given that new Beman libraries should be targeting c++29 and beyond, many people thought that going forward c++20 should be the minimum standard. This would match with the two cycle library retirement policy.
Proposed policy:
[cpp.minimum-version]
**Requirement**: Libraries should use a minimum of C++20 for
implementation and avoid C++17 patterns such as `enable_if`
Reasonably strong disagree from me. I’d want a policy that says what version we’re expected to support, and leaving it to individual libraries if they want to go beyond. If it’s a lot of noise it’s likely not useful, but for some libraries it can be a small enough amount of work and offer c++17 users (like most of automotive still is - in part because of MISRA C++ 23 being based on it, and AUTOSAR on that) the ability to polyfill.
Ok. I don’t think there can be a universal minimum support version. By that I mean if someone brings a reflection based library it necessarily will apply to 26 and above.
The Beman project isn’t responsible for the fact that these standards actively harm their users by preventing them from upgrading to safer standards. It is also, at least not currently, our mission to provide polyfill for older standards. Rather it is to improve the input for future standards.
I’d also note that independent of the mission arguments, holding on to older standards means a larger CI matrix.