Namespaces
Variants

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

From cppreference.net
(Anmerkung: Der bereitgestellte HTML-Code enthält keinen übersetzbaren Text, da alle Tags leer sind. Die Struktur bleibt gemäß den Anforderungen unverändert.)
Definiert in Header <chrono>
(seit C++20)
(seit C++20)
constexpr std:: chrono :: year_month_day operator + ( const std:: chrono :: year_month_day & ymd,

const std:: chrono :: years & dy

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

const std:: chrono :: year_month_day & ymd

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

const std:: chrono :: years & dy

) noexcept ;
(seit C++20)
1,2) Fügt dm. count ( ) Monate zum durch ymd repräsentierten Datum hinzu. Das Ergebnis hat denselben day ( ) wie ymd und dasselbe year ( ) und month ( ) wie std:: chrono :: year_month ( ymd. year ( ) , ymd. month ( ) ) + dm .
3,4) Fügt dy. count ( ) Jahre zum durch ymd repräsentierten Datum hinzu. Das Ergebnis entspricht std:: chrono :: year_month_day ( ymd. year ( ) + dy, ymd. month ( ) , ymd. day ( ) .
5) Subtrahiert dm. count ( ) Monate vom Datum, das durch ymd repräsentiert wird. Entspricht ymd + - dm .
6) Subtrahiert dy. count ( ) Jahre vom Datum, das durch ymd repräsentiert wird. Entspricht ymd + - dy .

Für Dauern, die sowohl in std::chrono::years als auch in std::chrono::months konvertierbar sind, werden die years Überladungen (3,4,6) bevorzugt, falls der Aufruf andernfalls mehrdeutig wäre.

Hinweise

Selbst wenn ymd. ok ( ) den Wert true hat, könnte das resultierende year_month_day kein gültiges Datum repräsentieren, falls ymd. day ( ) 29, 30 oder 31 beträgt.

Beispiel

#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';
}

Ausgabe:

true true true true