I have seen some implementations where the majority of the definition of overloaded post-increment or decrement are common.
I proposed a feature where you can only "explicitly" default the following operators:
class_name operator++(int) = default;
class_name operator--(int) = default;
where they both rely on the pre-increment and decrement operators. The rough equivalent may be:
class_name operator++(int) {
auto temp = *this;
++*this;
return temp;
}
class_name operator--(int) {
auto temp = *this;
--*this;
return temp;
}
I hope this one could help even if it's a minor addition.