namespace std {template<intmax_t N, intmax_t D =1>class ratio {public:staticconstexpr intmax_t num;
staticconstexpr intmax_t den;
using type = ratio<num, den>;
};
}
If the template argument D is zero or the absolute values of either of the
template arguments N and D is not representable by type
intmax_t, the program is ill-formed.
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.
The static data members num and den shall have the following values,
where gcd represents the greatest common divisor of the absolute values of
N and D: