Namespaces
Variants

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

From cppreference.net
Défini dans l'en-tête <chrono>
constexpr std:: chrono :: month operator + ( const std:: chrono :: month & m,
const std:: chrono :: months & ms ) noexcept ;
(1) (depuis C++20)
constexpr std:: chrono :: month operator + ( const std:: chrono :: months & ms,
const std:: chrono :: month & m ) noexcept ;
(2) (depuis C++20)
constexpr std:: chrono :: month operator - ( const std:: chrono :: month & m,
const std:: chrono :: months & ms ) noexcept ;
(3) (depuis C++20)
constexpr std:: chrono :: months operator - ( const std:: chrono :: month & m1,
const std:: chrono :: month & m2 ) noexcept ;
(4) (depuis C++20)
1,2) Ajoute ms. count ( ) mois à m . La valeur du mois contenue dans le résultat est calculée en évaluant d'abord static_cast < long long > ( unsigned ( m ) ) + ( ms. count ( ) - 1 ) , en la réduisant modulo 12 à un entier dans l'intervalle [ 0 , 11 ] , puis en ajoutant 1.
3) Soustrait ms. count ( ) mois de m et retourne le résultat. Équivalent à return m + - ms ; .
4) Si m1. ok ( ) et m2. ok ( ) sont tous deux true , retourne une valeur std::chrono::months m telle que m. count ( ) soit dans l'intervalle [ 0 , 11 ] et m2 + m == m1 . Sinon, la valeur retournée est non spécifiée.

Table des matières

Valeur de retour

1-3) Un std::chrono::month contenant une valeur de mois calculée comme décrit ci-dessus.
4) Un std::chrono::months représentant la distance entre m1 et m2 .

Notes

Tant que le calcul ne provoque pas de dépassement, (1-3) retourne toujours un mois valide même si m. ok ( ) est false .

Le résultat de la soustraction de deux valeurs de type month est une durée de type std::chrono::months . Cette unité de durée représente la longueur moyenne d'un mois grégorien, et la durée résultante n'a aucun lien avec le nombre de jours dans les mois spécifiques représentés par les opérandes. Par exemple, std:: chrono :: seconds ( std:: chrono :: April - std:: chrono :: March ) n'est pas le nombre de secondes en mars ( 2678400s ), mais 2629746s (30,436875 jours).

Exemple

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

Voir aussi

incrémente ou décrémente le mois
(fonction membre publique)
ajoute ou soustrait un nombre de mois
(fonction membre publique)