std::chrono::operator+, std::chrono::operator- (std::chrono::year)
Von cppreference.com
| constexpr std::chrono::year operator+( const std::chrono::year& y, const std::chrono::years& ys ) noexcept; |
(1) | (seit C++20) |
| constexpr std::chrono::year operator+( const std::chrono::years& ys, const std::chrono::year& y ) noexcept; |
(2) | (seit C++20) |
| constexpr std::chrono::year operator-( const std::chrono::year& y, const std::chrono::years& ys ) noexcept; |
(3) | (seit C++20) |
| constexpr std::chrono::years operator-( const std::chrono::year& y1, const std::chrono::year& y2 ) noexcept; |
(4) | (seit C++20) |
1,2) Addiert ys.count() Jahre zu y.
3) Subtrahiert ys.count() Jahre von y.
4) Gibt die Differenz in Jahren zwischen y1 und y2 zurück.
Inhalt |
[bearbeiten] Rückgabewert
1,2) std::chrono::year(int(y) + ys.count())
3) std::chrono::year(int(y) - ys.count())
4) std::chrono::years(int(y1) - int(y2))
[bearbeiten] Hinweise
Wenn der resultierende Jahreswert für (1-3) außerhalb des Bereichs [-32767, 32767] liegt, ist der tatsächlich gespeicherte Wert undefiniert.
Das Ergebnis der Subtraktion zweier year-Werte ist eine Dauer vom Typ std::chrono::years. Diese Dauereinheit repräsentiert die Länge des durchschnittlichen gregorianischen Jahres, und die resultierende Dauer steht in keiner Beziehung zur Anzahl der Tage in den spezifischen Jahren, die durch die Operanden repräsentiert werden. Beispielsweise ist das Ergebnis von 2018y - 2017y std::chrono::years(1), was 365,2425 Tagen entspricht und nicht 365 Tagen.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <cassert> #include <chrono> int main() { std::chrono::year y{2020}; y = std::chrono::years(12) + y; // overload (2): duration + time point assert(y == std::chrono::year(2032)); y = y - std::chrono::years(33); // overload (3): time point - duration assert(y == std::chrono::year(1999)); // y = std::chrono::years(33) - y; // not supported: duration - time point using namespace std::chrono; constexpr std::chrono::years ys = 2025y - 2020y; // overload (4) static_assert(ys == std::chrono::years(5)); }
[bearbeiten] Siehe auch
| inkrementiert oder dekrementiert den Monat (member function of std::chrono::month) | |
| addiert oder subtrahiert eine Anzahl von Monaten (member function of std::chrono::month) |