Namespaces
Variants

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

From cppreference.net
Definido en el 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) Agrega ms. count ( ) meses a m . El valor del mes contenido en el resultado se calcula evaluando primero static_cast < long long > ( unsigned ( m ) ) + ( ms. count ( ) - 1 ) , reduciéndolo módulo 12 a un entero en el rango [ 0 , 11 ] , y luego sumando 1.
3) Resta ms. count ( ) meses de m y devuelve el resultado. Equivalente a return m + - ms ; .
4) Si m1. ok ( ) y m2. ok ( ) son ambos true , retorna un valor std::chrono::months m tal que m. count ( ) esté en el rango [ 0 , 11 ] y m2 + m == m1 . De lo contrario, el valor retornado no está especificado.

Contenidos

Valor de retorno

1-3) Un std::chrono::month que contiene un valor de mes calculado como se describió anteriormente.
4) Un std::chrono::months que representa la distancia entre m1 y m2 .

Notas

Siempre que el cálculo no desborde, (1-3) siempre devuelve un mes válido incluso si m. ok ( ) es false .

El resultado de restar dos valores de month es una duración de tipo std::chrono::months . Esa unidad de duración representa la longitud promedio del mes gregoriano, y la duración resultante no guarda 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

#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)