std::chrono::operator+, std::chrono::operator- (std::chrono::weekday)
De cppreference.com
| Definido en el archivo de encabezado <chrono>
|
||
constexpr std::chrono::weekday operator+( const std::chrono::weekday& wd,
const std::chrono::days& d ) noexcept;
|
(1) | (desde C++20) |
constexpr std::chrono::weekday operator+( const std::chrono::days& d,
const std::chrono::weekday& wd ) noexcept;
|
(2) | (desde C++20) |
constexpr std::chrono::weekday operator-( const std::chrono::weekday& wd,
const std::chrono::days& d ) noexcept;
|
(3) | (desde C++20) |
constexpr std::chrono::days operator-( const std::chrono::weekday& wd1,
const std::chrono::weekday& wd2 ) noexcept;
|
(4) | (desde C++20) |
1-2) Suma
d.count() días a wd. El valor del día de la semana retenido en el resultado se calcula evaluando primero static_cast<long long>(wd.c_encoding()) + d.count(), reduciéndolo en módulo 7 a un entero en el rango [0, 6].3) Resta
d.count() días de wd. Equivalente a return wd + -d;4) Si tanto
wd1.ok() como wd2.ok() son true, devuelve un valor d de tipo std::chrono::days tal que d.count() se encuentra en el rango [0, 6] y wd2 + d == wd1. De lo contrario el valor devuelto no está especificado.Valor de retorno
1-3) Un objeto std::chrono::weekday que retiene un valor del día de la semana calculado como se describe anteriormente.
4) Un objeto std::chrono::days que representa la distancia entre
wd1 y wd2.Notas
Siempre que el cálculo no se desborde, (1-3) siempre devuelve un día de la semana válido incluso si wd.ok() es false.
Ejemplo
Ejecuta este código
#include <iostream>
#include <chrono>
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';
}
Salida:
true true true true true true
Véase también
| Incrementa o decrementa el día de la semana. (función miembro pública) | |
| Suma o resta un número de días. (función miembro pública) |