std::chrono::operator+, std::chrono::operator- (std::chrono::weekday)
Von cppreference.com
| Definiert in Header <chrono> |
||
| constexpr std::chrono::weekday operator+( const std::chrono::weekday& wd, const std::chrono::days& d ) noexcept; |
(1) | (seit C++20) |
| constexpr std::chrono::weekday operator+( const std::chrono::days& d, const std::chrono::weekday& wd ) noexcept; |
(2) | (seit C++20) |
| constexpr std::chrono::weekday operator-( const std::chrono::weekday& wd, const std::chrono::days& d ) noexcept; |
(3) | (seit C++20) |
| constexpr std::chrono::days operator-( const std::chrono::weekday& wd1, const std::chrono::weekday& wd2 ) noexcept; |
(4) | (seit C++20) |
1,2) Fügt d.count() Tage zu wd hinzu. Der im Ergebnis gehaltene Wochentagswert wird berechnet, indem zunächst static_cast<long long>(wd.c_encoding()) + d.count() ausgewertet und dann modulo 7 auf eine Ganzzahl im Bereich
[0, 6] reduziert wird.3) Subtrahiert d.count() Tage von wd. Entspricht return wd + -d;.
4) Wenn wd1.ok() und wd2.ok() beide true sind, wird ein std::chrono::days-Wert d zurückgegeben, so dass d.count() im Bereich
[0, 6] liegt und wd2 + d == wd1 gilt. Andernfalls ist der zurückgegebene Wert nicht spezifiziert.Inhalt |
[bearbeiten] Rückgabewert
1-3) Ein std::chrono::weekday, der den wie oben beschrieben berechneten Wochentagswert enthält.
4) Ein std::chrono::days, der die Differenz zwischen wd1 und wd2 darstellt.
[bearbeiten] Anmerkungen
Solange die Berechnung nicht überläuft, geben (1-3) immer ein gültiges weekday zurück, auch wenn wd.ok() false ist.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <chrono> #include <iostream> int main() { std::cout << std::boolalpha; std::chrono::weekday wd{4}; wd = wd + std::chrono::days(2); std::cout << (wd == std::chrono::weekday(6)) << ' ' << (wd == std::chrono::Saturday) << ' '; wd = wd - std::chrono::days(3); std::cout << (wd == std::chrono::weekday(3)) << ' ' << (wd == std::chrono::Wednesday) << ' '; wd = std::chrono::Tuesday; wd = wd + std::chrono::days{8}; // (((2 + 8) == 10) % 7) == 3; std::cout << (wd == std::chrono::Wednesday) << ' '; wd = wd + (std::chrono::Sunday - std::chrono::Thursday); // (3 + 3) == 6 std::cout << (wd == std::chrono::Saturday) << '\n'; }
Ausgabe
true true true true true true
[bearbeiten] Siehe auch
| inkrementiert oder dekrementiert den Wochentag (public member function) | |
| addiert oder subtrahiert eine Anzahl von Tagen (public member function) |