| std::chrono::operator+,std::chrono::operator-(std::chrono::year_month)(3) | C++ Standard Libary | std::chrono::operator+,std::chrono::operator-(std::chrono::year_month)(3) | 
NAME¶
std::chrono::operator+,std::chrono::operator-(std::chrono::year_month) - std::chrono::operator+,std::chrono::operator-(std::chrono::year_month)
Synopsis¶
 constexpr std::chrono::year_month operator+( const
  
   std::chrono::year_month& ym, (1) (since C++20)
  
   const
  
   std::chrono::years& dy ) noexcept;
  
   constexpr std::chrono::year_month operator+( const
  
   std::chrono::years& dy, (2) (since C++20)
  
   const
  
   std::chrono::year_month& ym ) noexcept;
  
   constexpr std::chrono::year_month operator+( const
  
   std::chrono::year_month& ym, (3) (since C++20)
  
   const
  
   std::chrono::months& dm ) noexcept;
  
   constexpr std::chrono::year_month operator+( const
  
   std::chrono::months& dm, (4) (since C++20)
  
   const
  
   std::chrono::year_month& ym ) noexcept;
  
   constexpr std::chrono::year_month operator-( const
  
   std::chrono::year_month& ym, (5) (since C++20)
  
   const
  
   std::chrono::years& dy ) noexcept;
  
   constexpr std::chrono::year_month operator-( const
  
   std::chrono::year_month& ym, (6) (since C++20)
  
   const
  
   std::chrono::months& dm ) noexcept;
  
   constexpr std::chrono::months operator-( const
  
   std::chrono::year_month& ym1, (7) (since C++20)
  
   const
  
   std::chrono::year_month& ym2 ) noexcept;
  
   1,2) Adds dy.count() years to ym.
  
   3,4) Adds dm.count() months to ym.
  
   5) Subtracts dy.count() years from ym.
  
   6) Subtracts dm.count() months from ym.
  
   7) Returns the difference in months between the two time points represented
    by ym1
  
   and ym2.
  
   For durations that are convertible to both std::chrono::years and
  
   std::chrono::months, the years overloads (1,2,5) are preferred if the call
    would
  
   otherwise be ambiguous.
Return value¶
 1,2) std::chrono::year_month(ym.year() + dy, ym.month())
  
   3,4) A year_month value z such that z - ym == dm and z.ok() == true.
  
   5) ym + -dy
  
   6) ym + -dm
  
   7)
  
   ym1.year() - ym2.year() + std::chrono::months(int(unsigned(ym1.month())) -
  
   int(unsigned(ym2.month())))
Notes¶
 The result of subtracting two year_month values is a duration of
    type
  
   std::chrono::months. This duration unit represents the length of the average
  
   Gregorian month (30.436875 days), and the resulting duration bears no
    relationship
  
   to the actual number of days in the time period at issue. For example, the
    result of
  
   2017y/3 - 2017y/2 is std::chrono::months(1), even though February 2017
    only contains
  
   28 days.
Example¶
// Run this code
  
   #include <cassert>
  
   #include <chrono>
  
   int main()
  
   {
  
   auto ym{std::chrono::year(2021)/std::chrono::July};
  
   ym = ym + std::chrono::months(14);
  
   assert(ym.month() == std::chrono::September);
  
   assert(ym.year() == std::chrono::year(2022));
  
   ym = ym - std::chrono::years(3);
  
   assert(ym.month() == std::chrono::month(9));
  
   assert(ym.year() == std::chrono::year(2019));
  
   ym = ym + (std::chrono::September - std::chrono::month(2));
  
   assert(ym.month() == std::chrono::April);
  
   assert(ym.year() == std::chrono::year(2020));
  
   }
See also¶
 operator+= modifies the year_month by some number of months or
    years
  
   operator-= (public member function)
| 2024.06.10 | http://cppreference.com |