std::chrono::operator+, std::chrono::operator- (std::chrono::month)
De cppreference.com
| Definido en el archivo de encabezado <chrono>
|
||
constexpr std::chrono::month operator+( const std::chrono::month& m,
const std::chrono::months& ms ) noexcept;
|
(1) | (desde C++20) |
constexpr std::chrono::month operator+( const std::chrono::months& ms,
const std::chrono::month& m ) noexcept;
|
(2) | (desde C++20) |
constexpr std::chrono::month operator-( const std::chrono::month& m,
const std::chrono::months& ms ) noexcept;
|
(3) | (desde C++20) |
constexpr std::chrono::months operator-( const std::chrono::month& m1,
const std::chrono::month& m2 ) noexcept;
|
(4) | (desde C++20) |
1-2) Suma
ms.count() meses a m. El valor del mes retenido en el resultado se calcula evaluando primero static_cast<long long>(unsigned(m)) + (ms.count() - 1), reduciéndolo en módulo 12 a un entero en el rango [0, 11], y luego sumándole 1.3) Resta
ms.count() meses de m y devuelve el resultado. Equivalente a return m + -ms;4) Si tanto
m1.ok() como m2.ok() son true, devuelve un valor m de tipo std::chrono::months tal que m.count() se encuentra en el rango [0, 11] y m2 + m == m1. De lo contrario el valor devuelto no está especificado.Valor de retorno
1-3) Un objeto std::chrono::month que retiene un valor del mes calculado como se describe anteriormente.
4) Un objeto std::chrono::months que representa la distancia entre
m1 y m2.Notas
Siempre que el cálculo no se desborde, (1-3) siempre devuelve un mes válido incluso si m.ok() es false.
El resultado de restar dos valores de tipo month es una duración de tipo std::chrono::months. Esa unidad de duración representa la duración del mes gregoriano promedio, y la duración resultante no tiene relación con el número de días en los meses particulares representados por los operandos. Por ejemplo, std::chrono::seconds(std::chrono::April - std::chrono::March) no es el número de segundos en marzo (2678400s), sino 2629746s (30.436875 días).
Ejemplo
Ejecuta este código
#include <cassert>
#include <chrono>
int main()
{
std::chrono::month m {6};
m = m + std::chrono::months(2);
assert(m == std::chrono::month(8));
m = m - std::chrono::months(3);
assert(m == std::chrono::month(5));
constexpr std::chrono::months ms = std::chrono::month(8) - std::chrono::month(6);
static_assert(ms == std::chrono::months(2));
}
Véase también
| Incrementa o decrementa el mes. (función miembro pública) | |
| Suma o resta un número de meses. (función miembro pública) |