std::chrono::operator+, std::chrono::operator- (std::chrono::weekday)
De cppreference.com
Definido en el archivo de encabezado <chrono> | ||
constexprstd::chrono::weekday operator+(conststd::chrono::weekday& wd, conststd::chrono::days& d )noexcept; | (1) | (desde C++20) |
constexprstd::chrono::weekday operator+(conststd::chrono::days& d, conststd::chrono::weekday& wd )noexcept; | (2) | (desde C++20) |
constexprstd::chrono::weekday operator-(conststd::chrono::weekday& wd, conststd::chrono::days& d )noexcept; | (3) | (desde C++20) |
constexprstd::chrono::days operator-(conststd::chrono::weekday& wd1, conststd::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<longlong>(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.Contenido |
[editar]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
.[editar]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.
[editar]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) == 6std::cout<<(wd ==std::chrono::Saturday)<<'\n';}
Salida:
true true true true true true
[editar]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) |