Namespaces
Variants

std::chrono:: operator+, std::chrono:: operator- (std::chrono::year)

From cppreference.net
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): duration + time point
    assert(y == std::chrono::year(2032));
    y = y - std::chrono::years(33); // перегрузка (3): time point - duration
    assert(y == std::chrono::year(1999));
    // y = std::chrono::years(33) - y; // не поддерживается: duration - time point
    using namespace std::chrono;
    constexpr std::chrono::years ys = 2025y - 2020y; // перегрузка (4)
    static_assert(ys == std::chrono::years(5));
}

Смотрите также

увеличивает или уменьшает месяц
(публичная функция-член std::chrono::month )
добавляет или вычитает количество месяцев
(публичная функция-член std::chrono::month )