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