if(a.negative!=b.negative){
return false;
}
return std::equal(a.container.begin(),a.container.end(),b.container.begin(),b.container.end());
}
For the last line, doesn't vector's operator== do what you need?
So you end up just checking if all the data members are equal. So use the C++20 capability to autogenerate it.
But you mentioned using C++20 in order to have <=> and that includes == when you have strong_ordering. So why do you define this at all?