Namespaces
Variants

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

From cppreference.net
(1) (desde C++20)
(2) (desde C++20)
(3) (desde C++20)
(4) (desde C++20)
(5) (desde C++20)
(6) (desde C++20)
1,2) Agrega dm. count ( ) meses a la fecha representada por ymwd . El resultado tiene el mismo year() y month() que std:: chrono :: year_month ( ymwd. year ( ) , ymwd. month ( ) ) + dm y el mismo weekday() y index() que ymwd .
3,4) Añade dy. count ( ) años a la fecha representada por ymwd . El resultado es equivalente a std:: chrono :: year_month_weekday ( ymwd. year ( ) + dy, ymwd. month ( ) , ymwd. weekday_indexed ( ) ) .
5) Resta dm. count ( ) meses de la fecha representada por ymwd . Equivalente a ymwd + - dm .
6) Resta dy. count ( ) años de la fecha representada por ymwd . Equivalente a ymwd + - dy .

Para duraciones que son convertibles tanto a std::chrono::years como a std::chrono::months , las sobrecargas de years (3,4,6) tienen preferencia si la llamada sería de otro modo ambigua.

Notas

Aunque ymwd. ok ( ) sea true , el year_month_weekday resultante puede no representar una fecha válida si ymwd. index ( ) es 5 .

Ejemplo

#include <cassert>
#include <chrono>
#include <iostream>
int main()
{
    auto ymwdi{1/std::chrono::Wednesday[1]/2021};
    std::cout << ymwdi << '\n';
    ymwdi = std::chrono::years(5) + ymwdi;
    // Primer miércoles en enero, 2026
    std::cout << ymwdi << '\n';
    assert(static_cast<std::chrono::year_month_day>(ymwdi) ==
           std::chrono::January/7/2026);
    ymwdi = ymwdi - std::chrono::months(6);
    // Primer miércoles en julio, 2025
    std::cout << ymwdi << '\n';
    assert(static_cast<std::chrono::year_month_day>(ymwdi) ==
           std::chrono::July/2/2025);
}

Salida:

2021/Jan/Wed[1]
2026/Jan/Wed[1]
2025/Jul/Wed[1]