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

From cppreference.com
Utilities library
General utilities
Relational operators (deprecated in C++20)
Defined in header <chrono>
(since C++20)
(since C++20)
constexpr std:: chrono :: year_month_day operator + ( const std:: chrono :: year_month_day & ymd,

const std:: chrono :: years & dy

) noexcept ;
(since C++20)
constexpr std:: chrono :: year_month_day operator + ( const std:: chrono :: years & dy,

const std:: chrono :: year_month_day & ymd

) noexcept ;
(since C++20)
(since C++20)
constexpr std:: chrono :: year_month_day operator - ( const std:: chrono :: year_month_day & ymd,

const std:: chrono :: years & dy

) noexcept ;
(since C++20)
1,2) Adds dm. count ( ) months to the date represented by ymd . The result has the same day ( ) as ymd and the same year ( ) and month ( ) as std:: chrono :: year_month ( ymd. year ( ) , ymd. month ( ) ) + dm .
3,4) Adds dy. count ( ) years to the date represented by ymd . The result is equivalent to std:: chrono :: year_month_day ( ymd. year ( ) + dy, ymd. month ( ) , ymd. day ( ) .
5) Subtracts dm. count ( ) months from the date represented by ymd . Equivalent to ymd + - dm .
6) Subtracts dy. count ( ) years from the date represented by ymd . Equivalent to ymd + - dy .

For durations that are convertible to both std::chrono::years and std::chrono::months , the years overloads (3,4,6) are preferred if the call would otherwise be ambiguous.

Notes

Even if ymd. ok ( ) is true , the resulting year_month_day may not represent a valid date if ymd. day ( ) is 29, 30, or 31.

Example

#include <chrono>
#include <iostream>
 
int main()
{
    std::cout << std::boolalpha;
 
    auto ymd{std::chrono::day(1)/std::chrono::July/2021};
 
    ymd = ymd + std::chrono::months(4);
    std::cout << (ymd.month() == std::chrono::November) << ' '
              << (ymd.year() == std::chrono::year(2021)) << ' ';
 
    ymd = ymd - std::chrono::years(10);
    std::cout << (ymd.month() == std::chrono::month(11)) << ' '
              << (ymd.year() == std::chrono::year(2011)) << '\n';
}

Output:

true true true true