Files
cppdraft_translate/cppdraft/ratio/comparison.md
2025-10-25 03:02:53 +03:00

1.5 KiB
Raw Blame History

[ratio.comparison]

21 Metaprogramming library [meta]

21.5 Compile-time rational arithmetic [ratio]

21.5.5 Comparison of ratios [ratio.comparison]

🔗

template<class R1, class R2> struct ratio_equal : bool_constant<R1::num == R2::num && R1::den == R2::den> { };

🔗

template<class R1, class R2> struct ratio_not_equal : bool_constant<!ratio_equal_v<R1, R2>> { };

🔗

template<class R1, class R2> struct ratio_less : bool_constant<see below> { };

1

#

If R1::num × R2::den is less than R2::num × R1::den,ratio_less<R1, R2> shall be derived from bool_constant; otherwise it shall be derived frombool_constant.

Implementations may use other algorithms to compute this relationship to avoid overflow.

If overflow occurs, the program is ill-formed.

🔗

template<class R1, class R2> struct ratio_less_equal : bool_constant<!ratio_less_v<R2, R1>> { };

🔗

template<class R1, class R2> struct ratio_greater : bool_constant<ratio_less_v<R2, R1>> { };

🔗

template<class R1, class R2> struct ratio_greater_equal : bool_constant<!ratio_less_v<R1, R2>> { };