[英]Why does std::ratio not support comparison operators?
由於C ++標准庫通常為其類提供重載運算符,我想知道為什么存在比較函數(實際上不是函數,而是使用重載() - 運算符的結構)但是沒有std :: ratio類的比較運算符。
我認為他們會提供更好的使用和可讀性,也可以在編譯時執行。
即使他們的特定解決方案需要使用結構進行模板元編程,將它包裝到另一個函數中應該沒有問題:
template<intmax_t N1, intmax_t D1, intmax_t N2, intmax_t D2>
constexpr bool operator==(const ratio<N1, D1>& first, const ratio<N2, D2>& second) {
return ratio_equal<ratio<N1,D1>, ratio<N2,D2>>();
}
實際上對我有用,也可以很容易地為所有其他運營商采用
所以,我錯過了什么,或者有人知道為什么他們決定不支持這里的運營商?
ratio
類不是為了實例化而設計的; 它沒有數據成員,因此基於它的任何對象都不包含類類型本身之外的任何信息。 由於必須針對對象而不是類型調用運算符,因此提供它們是沒有意義的。 它甚至會適得其反,因為它意味着實例化這個類會很有用。
如果你真的需要運行時對象而不是編譯時類型,我建議ratio
可能不是合適的選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.