On 20/02/2023 12:00, Andrey Semashev wrote:
Regardless of the intention, this isn't a license to break existing code. There are reasons to keep using Boost.Operators in C++20 and beyond - one of them being compatibility with prior C++ versions.
Sure, but in theory Boost.Operators classes could just switch to a simplified implementation when C++20 is in use. Perhaps there are some cases that become tricky to map from one to the other, but less_than_comparable naturally maps to spaceship and equality_comparable happens for free, and most of the others shouldn't be affected, I would have thought?
Sometimes it seems the Committee just assumes the world will momentarily upgrade to the latest C++ standard and all legacy code cease to exist.
I don't think this is true; it's a long-standing joke that all of the default behaviours of C++ are wrong, in order to maintain backwards compatibility of legacy code. (See also: explicit, [[nodiscard]].) As someone who maintains a 40+-year-old codebase myself, I'm quite thankful that code in the dark recesses still mostly works without having to disturb the spiders.