std::chrono...::operator-=(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’… NAME πŸ’…

okay so this is the std::chrono...::operator-=(3) page from the C++ Standard Libary manual β€” and yes, the header really spells it Libary, and I'm not fixing it, bestie πŸ’€. The NAME line is std::chrono::month::operator+=,std::chrono::month::operator-=, then a dash, then the exact same thing again: std::chrono::month::operator+=,std::chrono::month::operator-=. slay.


✨ Synopsis ✨

The page lists two signatures, both constexpr, both returning std::chrono::month&, both taking const std::chrono::months& m, and both noexcept. They're giving since-C++20 energy.

  • (1) (since C++20)
constexpr std::chrono::month& operator+=( const
std::chrono::months& m ) noexcept;
  • (2) (since C++20)
constexpr std::chrono::month& operator-=( const
std::chrono::months& m ) noexcept;

Adds or subtracts m.count() from the month value, reducing the result modulo 12 to an integer in the range [1, 12].

  • 1) Performs *this = *this + m;.
  • 2) Performs *this = *this - m;.

🫢 Return value 🫢

A reference to this month after modification.


🌸 Notes 🌸

After a call to one of these functions, ok() is always true if no overflow occurred during the operation.


πŸŽ€ Example πŸŽ€

the page says // Run this code before the snippet, so here's that exact code:

#include <chrono>
#include <iostream>

int main()
{
    std::cout << std::boolalpha;

    std::chrono::month m{6};
    m += std::chrono::months(2);
    std::cout << (m == std::chrono::month(8)) << ' '
              << (m == std::chrono::August) << ' ';

    m -= std::chrono::months(3);
    std::cout << (m == std::chrono::month(5)) << ' '
              << (m == std::chrono::May) << ' ';

    m = std::chrono::October;
    m += std::chrono::months{8}; // ((10 += 8 == 18) % 12) == 6;
    std::cout << (m == std::chrono::June) << ' ';

    m -= std::chrono::months{std::chrono::December -
       std::chrono::February}; // -= 10
    // (6 -= 10) == -4; -4 % 12 == (12 - 4) == 8
    std::cout << (m == std::chrono::August) << '\n';
}

πŸ“ Output πŸ“

true true true true true true

πŸ‘‘ See also πŸ‘‘

the See also crew:

  • operator++
  • operator++(int) β€” increments or decrements the month
  • operator-- β€” (public member function)
  • operator--(int)
  • operator+ β€” performs arithmetic on months
  • operator- β€” (function)
  • (C++20)

that's the whole page, mwah πŸ’‹ β€” source/version http://cppreference.com, date 2024.06.10, and the footer's page name std::chrono...::operator-=(3).

πŸ“¦ where this page comes from