Handle operators 2 #448
@jwesthues Any strong opinions on this change? It adds a bit of type safety in that it's an error to compare unrelated handles, and it makes maps with handles as keys a bit nicer. And although I'm very much not fond of the way C++ manages to provide basic functionality, this implementation is not invasive and shouldn't cause us any problems like doing this with CRTP.
Overall, a lot of people cite SolveSpace's idiosyncratic C++ as a reason the codebase is hard to contribute to; and although some of those complaints are not that well founded, some others are. I personally think there's no especially good reason to not define equality on aggregate classes where it makes sense for all members.