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