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>; }; }
Если аргумент шаблона D равен нулю или равен абсолютным значениям любого из аргументов шаблона N и D не может быть представлен по типу intmax_t, программа имеет неправильный формат. [ Note: Эти правила гарантируют, что можно избежать бесконечных соотношений и что для любого отрицательного входа существует представимое значение его абсолютного значения, которое является положительным. В представлении с дополнением до двух это исключает самое отрицательное значение. ] — end note