- Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| std::chrono::operator+,std::chrono::operator-(std::chrono::month)(3) | C++ Standard Libary | std::chrono::operator+,std::chrono::operator-(std::chrono::month)(3) | 
NAME¶
std::chrono::operator+,std::chrono::operator-(std::chrono::month) - std::chrono::operator+,std::chrono::operator-(std::chrono::month)
Synopsis¶
 Defined in header <chrono>
  
   constexpr std::chrono::month operator+( const std::chrono::month&
  
   m, (1) (since C++20)
  
   const std::chrono::months&
  
   ms ) noexcept;
  
   constexpr std::chrono::month operator+( const std::chrono::months&
  
   ms, (2) (since C++20)
  
   const std::chrono::month&
  
   m ) noexcept;
  
   constexpr std::chrono::month operator-( const std::chrono::month&
  
   m, (3) (since C++20)
  
   const std::chrono::months&
  
   ms ) noexcept;
  
   constexpr std::chrono::months operator-( const std::chrono::month&
  
   m1, (4) (since C++20)
  
   const std::chrono::month&
  
   m2 ) noexcept;
  
   1,2) Adds ms.count() months to m. The month value held in the result is
    computed by
  
   first evaluating static_cast<long long>(unsigned(m)) + (ms.count() -
    1), reducing it
  
   modulo 12 to an integer in the range [0, 11], and then adding 1.
  
   3) Subtracts ms.count() months from m and returns the result. Equivalent to
    return m
  
   + -ms;.
  
   4) If m1.ok() and m2.ok() are both true, returns a std::chrono::months value
    m such
  
   that m.count() is in the range [0, 11] and m2 + m == m1. Otherwise the
    returned
  
   value is unspecified.
Return value¶
 1-3) A std::chrono::month holding a month value calculated as
    described above.
  
   4) A std::chrono::months representing the distance between m1 and m2.
Notes¶
 As long as the computation doesn't overflow, (1-3) always return
    a valid month even
  
   if m.ok() is false.
  
   The result of subtracting two month values is a duration of type
  
   std::chrono::months. That duration unit represents the length of the average
  
   Gregorian month, and the resulting duration bears no relationship to the
    number of
  
   days in the particular months represented by the operands. For example,
  
   std::chrono::seconds(std::chrono::April - std::chrono::March) is not the
    number of
  
   seconds in March (2678400s), but 2629746s (30.436875 days).
Example¶
// Run this code
  
   #include <cassert>
  
   #include <chrono>
  
   int main()
  
   {
  
   std::chrono::month m{6};
  
   m = m + std::chrono::months(2);
  
   assert(m == std::chrono::month(8));
  
   m = m - std::chrono::months(3);
  
   assert(m == std::chrono::month(5));
  
   constexpr std::chrono::months ms = std::chrono::month(8) -
    std::chrono::month(6);
  
   static_assert(ms == std::chrono::months(2));
  
   }
See also¶
 operator++
  
   operator++(int) increments or decrements the month
  
   operator-- (public member function)
  
   operator--(int)
  
   operator+= adds or subtracts a number of months
  
   operator-= (public member function)
| 2024.06.10 | http://cppreference.com |