D.6.1. Шаблон класса std::ratio
Шаблон класса <std::ratio> предоставляет механизм для выполнения на этапе компиляции арифметических операций с рациональными числами, например: деления пополам (std::ratio<1, 2>), нахождения двух третей (std::ratio<2, 3>) пятнадцати сорок третьих (std::ratio<15, 43>). В стандартной библиотеке С++ этот шаблон используется для задания периода при конкретизации шаблона класса std::chrono::duration.
Определение класса
template <intmax_t N, intmax_t D = 1>
class ratio {
public:
typedef ratio<num, den> type;
static constexpr intmax_t num = см. ниже;
static constexpr intmax_t den = см. ниже;
};
Требования
D не может быть равно нулю.
Описание
num и den — соответственно числитель и знаменатель дроби N/D после сокращения без общих множителей. Значение den всегда положительно. Если N и D одного знака, то num положительно, иначе num отрицательно.
Примеры
ratio<4,6>::num == 2
ratio<4,6>::den == 3
ratio<4,-6>::num == -2
ratio<4,-6>::den == 3