Files
2025-10-25 03:02:53 +03:00

1.4 KiB

[ratio.ratio]

21 Metaprogramming library [meta]

21.5 Compile-time rational arithmetic [ratio]

21.5.3 Class template ratio [ratio.ratio]

🔗

namespace std {template<intmax_t N, intmax_t D = 1> class ratio {public:static constexpr intmax_t num; static constexpr intmax_t den; using type = ratio<num, den>; };}

1

#

If the template argument D is zero or the absolute values of either of the template arguments N and D is not representable by typeintmax_t, the program is ill-formed.

[Note 1:

These rules ensure that infinite ratios are avoided and that for any negative input, there exists a representable value of its absolute value which is positive.

This excludes the most negative value.

— end note]

2

#

The static data members num and den shall have the following values, where gcd represents the greatest common divisor of the absolute values ofN and D:

  • (2.1)

    num shall have the value sgn(N) * sgn(D) * abs(N) / gcd.

  • (2.2)

    den shall have the value abs(D) / gcd.