Namespaces
Variants

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

From cppreference.net
(1) (C++20 이후)
(2) (C++20 이후)
(3) (C++20 이후)
(4) (C++20 이후)
(5) (C++20 이후)
(6) (C++20 이후)
1,2) dm. count ( ) 개월을 ymwd 가 나타내는 날짜에 더합니다. 결과는 std:: chrono :: year_month ( ymwd. year ( ) , ymwd. month ( ) ) + dm 와 동일한 year() month() 를 가지며, ymwd 와 동일한 weekday() index() 를 가집니다.
3,4) dy. count ( ) 년을 ymwd 가 나타내는 날짜에 더합니다. 결과는 std:: chrono :: year_month_weekday ( ymwd. year ( ) + dy, ymwd. month ( ) , ymwd. weekday_indexed ( ) ) 와 동일합니다.
5) ymwd 가 나타내는 날짜에서 dm. count ( ) 개월을 뺍니다. ymwd + - dm 와 동일합니다.
6) dy. count ( ) 가 나타내는 연도 수를 ymwd 가 나타내는 날짜에서 뺍니다. ymwd + - dy 와 동일합니다.

std::chrono::years std::chrono::months 모두로 변환 가능한 지속 시간의 경우, 호출이 모호해질 수 있는 상황에서는 years 오버로드 (3,4,6) 가 우선적으로 선택됩니다.

참고 사항

ymwd. ok ( ) true 인 경우에도, ymwd. index ( ) 5 이면 결과 year_month_weekday 가 유효한 날짜를 나타내지 않을 수 있습니다.

예제

#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;
    // 2026년 1월 첫 번째 수요일
    std::cout << ymwdi << '\n';
    assert(static_cast<std::chrono::year_month_day>(ymwdi) ==
           std::chrono::January/7/2026);
    ymwdi = ymwdi - std::chrono::months(6);
    // 2025년 7월 첫 번째 수요일
    std::cout << ymwdi << '\n';
    assert(static_cast<std::chrono::year_month_day>(ymwdi) ==
           std::chrono::July/2/2025);
}

출력:

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