Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | chrono‎ | weekday
 
 
 
 
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 [06] 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 [06] 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

#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) [edit]
addiert oder subtrahiert eine Anzahl von Tagen
(public member function) [edit]