template
class ratio {
public:
typedef ratio
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
using ratio_add = std::ratio<
R1 и R2 должны быть конкретизациями шаблона std::ratio.
ratio_add определяется как псевдоним конкретизации std::ratio, представляющий сумму дробей, представленных параметрами R1 и R2, если эту сумму можно вычислить без переполнения. Если при вычислении возникает переполнение, то программа считается некорректной. В отсутствии переполнения std::ratio_add будет иметь такие же значения num и den, как в конкретизации std::ratio.
std::ratio_add
std::ratio_add
std::ratio_add
std::ratio_add
D.6.3. Псевдоним шаблона std::ratio_subtract
Псевдоним шаблона std::ratio_subtract предоставляет механизм вычитания двух значений std::ratio на этапе компиляции с применением правил арифметических операций с рациональными числами.
template
using ratio_subtract = std::ratio<с
R1 и R2 должны быть конкретизациями шаблона std::ratio.
ratio_subtract определяется как псевдоним конкретизации std::ratio, представляющий разность дробей, представленных параметрами R1 и R2, если эту разность можно вычислить без переполнения. Если при вычислении возникает переполнение, то программа считается некорректной. В отсутствии переполнения std::ratio_subtract будет иметь такие же значения num и den, как в конкретизации std::ratio.
std::ratio_subtract
std::ratio_subtract
std::ratio_subtract
std::ratio_subtract
D.6.4. Псевдоним шаблона std::ratio_multiply
Псевдоним шаблона std::ratio_multiply предоставляет механизм умножения двух значений std::ratio на этапе компиляции с применением правил арифметических операций с рациональными числами.
template
using ratio_multiply = std::ratio<
R1 и R2 должны быть конкретизациями шаблона std::ratio.
ratio_multiply определяется как псевдоним конкретизации std::ratio, представляющий произведение дробей, представленных параметрами R1 и R2, если это произведение можно вычислить без переполнения. Если при вычислении возникает переполнение, то программа считается некорректной. В отсутствии переполнения std::ratio_multiply будет иметь такие же значения num и den, как в конкретизации std::ratio.
std::ratio_multiply
std::ratio_multiply
std::ratio_multiply
std::ratio_multiply
D.6.5. Псевдоним шаблона std::ratio_divide