如何表明某个类不支持某些运算符?

rom*_*ovs 0 c++ error-handling compiler-errors operator-overloading

我正在写一个代表顺序尺度的类,但没有逻辑零点(例如时间).这个规模应该允许加法和减法(operator+,operator+=,...),但无法繁殖.

然而,我总觉得这是一个很好的做法,当一个人重载一个特定组的一个操作符(在这种情况下是数学运算符)时,还应该重载属于该组的所有其他操作符.在这种情况下,这意味着我还需要重载乘法和除法运算符,因为如果用户可以使用,A+B他很可能期望能够运行其他运算符.

有没有一种方法可以用来在编译时为此抛出错误?最简单的方法就是不要重载操作符operator*,......但是添加更多的解释似乎是合适的operator* is not know for class "time".

或者这是我真的不应该关心的事情(RTFM用户)?

K-b*_*llo 8

实施一个运算符只是为了表明没有实现的信号似乎是人为的.如果有的话,您可以将其定义为private成员函数,并static_assert在其中放置一个显示编译器错误,如果有人(可能是朋友)尝试使用它.

未实现运算符时的最佳解决方案:不实现它.