[ratio.comparison] # 21 Metaprogramming library [[meta]](./#meta) ## 21.5 Compile-time rational arithmetic [[ratio]](ratio#comparison) ### 21.5.5 Comparison of ratios [ratio.comparison] [🔗](#lib:ratio_equal) `template struct ratio_equal : bool_constant { }; ` [🔗](#lib:ratio_not_equal) `template struct ratio_not_equal : bool_constant> { }; ` [🔗](#lib:ratio_less) `template struct ratio_less : bool_constant { }; ` [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/meta.tex#L7242) If R1​::​num × R2​::​den is less than R2​::​num × R1​::​den,ratio_less shall be derived from bool_constant; otherwise it shall be derived frombool_constant[.](#1.sentence-1) Implementations may use other algorithms to compute this relationship to avoid overflow[.](#1.sentence-2) If overflow occurs, the program is ill-formed[.](#1.sentence-3) [🔗](#lib:ratio_less_equal) `template struct ratio_less_equal : bool_constant> { }; ` [🔗](#lib:ratio_greater) `template struct ratio_greater : bool_constant> { }; ` [🔗](#lib:ratio_greater_equal) `template struct ratio_greater_equal : bool_constant> { }; `