std::chrono::operator+, std::chrono::operator- (std::chrono::year)
Материал из cppreference.com
<tbody>
</tbody>
constexpr std::chrono::year operator+( const std::chrono::year& y, const std::chrono::years& ys ) noexcept; |
(1) | (начиная с C++20) |
constexpr std::chrono::year operator+( const std::chrono::years& ys, const std::chrono::year& y ) noexcept; |
(2) | (начиная с C++20) |
constexpr std::chrono::year operator-( const std::chrono::year& y, const std::chrono::years& ys ) noexcept; |
(3) | (начиная с C++20) |
constexpr std::chrono::years operator-( const std::chrono::year& y1, const std::chrono::year& y2 ) noexcept; |
(4) | (начиная с C++20) |
1,2) Добавляет
ys.count() лет к y. 3) Вычитает
ys.count() лет из y.4) Возвращает разницу в годах между
y1 и y2.Возвращаемое значение
1,2)
std::chrono::year(int(y) + ys.count())3)
std::chrono::year(int(y) - ys.count())4)
std::chrono::years(int(y1) - int(y2))Примечание
Если результирующее значение года для (1-3) выходит за пределы диапазона [-32767, 32767], фактическое сохранённое значение не определено.
Результатом вычитания двух значений year является длительность типа std::chrono::years. Эта единица длительности представляет собой длительность среднего года по григорианскому календарю, и полученная длительность не имеет никакого отношения к количеству дней в конкретных годах, представленных операндами. Например, результатом 2018y - 2017y будет std::chrono::years(1), что соответствует 365.2425 дням, а не 365 дням.
Пример
Запустить этот код
#include <cassert>
#include <chrono>
int main()
{
std::chrono::year y{2020};
y = std::chrono::years(12) + y; // перегрузка (2): длительность + момент времени
assert(y == std::chrono::year(2032));
y = y - std::chrono::years(33); // перегрузка (3): момент времени - длительность
assert(y == std::chrono::year(1999));
// y = std::chrono::years(33) - y; // не поддерживается: длительность - момент времени
using namespace std::chrono;
constexpr std::chrono::years ys = 2025y - 2020y; // перегрузка (4)
static_assert(ys == std::chrono::years(5));
}
Смотрите также
| инкрементирует или декрементирует месяц (public функция-элемент std::chrono::month)
| |
| прибавляет или вычитает количество месяцев (public функция-элемент std::chrono::month)
|