Espacios de nombres
Variantes

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

De cppreference.com
 
 
Biblioteca de servicios
Apoyo del lenguaje
Apoyo de tipos (tipos básicos, RTTI)
Macros de prueba de característica de la biblioteca (C++20)
Servicios de programa
Funciones variádicas
Apoyo de corrutinas (C++20)
Apoyo de contratos (C++26)
Comparación de tres vías (C++20)
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

 
 
 
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

#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) [editar]
Suma o resta un número de meses.
(función miembro pública) [editar]