Читать «Параллельное программирование на С++ в действии. Практика разработки многопоточных программ» онлайн - страница 433
Энтони Уильямс
struct ratio_greater_equal;
typedef ratio<1, 1000000000000000000> atto;
typedef ratio<1, 1000000000000000> femto;
typedef ratio<1, 1000000000000> pico;
typedef ratio<1, 1000000000> nano;
typedef ratio<1, 1000000> micro;
typedef ratio<1, 1000> milli;
typedef ratio<1, 100> centi;
typedef ratio<1, 10> deci;
typedef ratio<10, 1> deca;
typedef ratio<100, 1> hecto;
typedef ratio<1000, 1> kilo;
typedef ratio<1000000, 1> mega;
typedef ratio<1000000000, 1> giga;
typedef ratio<1000000000000, 1> tera;
typedef ratio<1000000000000000, 1> peta;
typedef ratio<1000000000000000000, 1> exa;
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
D.6.2. Псевдоним шаблона std::ratio_add
Псевдоним шаблона std::ratio_add
предоставляет механизм сложения двух значений std::ratio
на этапе компиляции с применением правил арифметических операций с рациональными числами.
template <class R1, class R2>
using ratio_add = std::ratio<
R1
и R2
должны быть конкретизациями шаблона std::ratio
.