Namespaces
Variants

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

From cppreference.net
Défini dans l'en-tête <chrono>
(depuis C++20)
(depuis C++20)
(depuis C++20)
(depuis C++20)
(depuis C++20)
(depuis C++20)
1,2) Ajoute dm. count ( ) mois à la date représentée par ymdl . Le résultat a la même year() et le même month() que std:: chrono :: year_month ( ymdl. year ( ) , ymdl. month ( ) ) + dm .
3,4) Ajoute dy. count ( ) années à la date représentée par ymdl . Le résultat est équivalent à std:: chrono :: year_month_day_last ( ymdl. year ( ) + dy, ymdl. month_day_last ( ) ) .
5) Soustrait dm. count ( ) mois de la date représentée par ymdl . Équivalent à ymdl + - dm .
6) Soustrait dy. count ( ) années de la date représentée par ymdl . Équivalent à ymdl + - dy .

Pour les durées qui sont convertibles à la fois en std::chrono::years et en std::chrono::months , les surcharges years (3,4,6) sont préférées si l'appel serait autrement ambigu.

Exemple

#include <cassert>
#include <chrono>
#include <iostream>
int main()
{
    auto ymdl{11/std::chrono::last/2020};
    std::cout << ymdl << '\n';
    ymdl = std::chrono::years(10) + ymdl;
    std::cout << ymdl << '\n';
    assert(ymdl == std::chrono::day(30)/
                   std::chrono::November/
                   std::chrono::year(2030));
    ymdl = ymdl - std::chrono::months(6);
    std::cout << ymdl << '\n';
    assert(ymdl == std::chrono::day(31)/
                   std::chrono::May/
                   std::chrono::year(2030));
}

Sortie :

2020/Nov/last
2030/Nov/last
2030/May/last