由於比較浮點的不穩定性,我希望在使用比較運算符時至少有一個警告。如何刪除浮點變量的運算符==(和!=)
例子:
float a,b;
a == b; // Here the warning shall be thrown
我如何能實現呢?
我認爲超載的,如:
inline bool operator==(const float& a, const float& b)
{
#warning "Usage of equal on floating point variables not allowed."
return false;
}
我沒有發現它明確說明,但似乎該運營商是壓倒一切的是被禁止的MSVC拋出C2803和gcc拋出「必須有一流的參數或枚舉類型「(也在Global overloading of == and != for floating-points中描述)。即使可能,編譯器在遇到#error語句時也會發出錯誤,即使未使用也是如此。
爲什麼你想重載一個內置類型的操作符? –
你是什麼意思*由於浮點比較的未定義行爲*?浮點比較中沒有未定義的行爲。 – NathanOliver
比較花車不是UB。這甚至不是內在的錯誤。它只有很高的潛力,不能按照你想要的方式工作。 – harold