std::chrono:: operator+, std::chrono:: operator- (std::chrono::year_month_weekday)
|
constexpr
std::
chrono
::
year_month_weekday
operator
+
(
const
std::
chrono
::
year_month_weekday
&
ymwd,
|
(1) | (начиная с C++20) |
|
constexpr
std::
chrono
::
year_month_weekday
operator
+
(
const
std::
chrono
::
months
&
dm,
|
(2) | (начиная с C++20) |
|
constexpr
std::
chrono
::
year_month_weekday
operator
+
(
const
std::
chrono
::
year_month_weekday
&
ymwd,
|
(3) | (начиная с C++20) |
|
constexpr
std::
chrono
::
year_month_weekday
operator
+
(
const
std::
chrono
::
years
&
dy,
|
(4) | (начиная с C++20) |
|
constexpr
std::
chrono
::
year_month_weekday
operator
-
(
const
std::
chrono
::
year_month_weekday
&
ymwd,
|
(5) | (начиная с C++20) |
|
constexpr
std::
chrono
::
year_month_weekday
operator
-
(
const
std::
chrono
::
year_month_weekday
&
ymwd,
|
(6) | (начиная с C++20) |
year()
и
month()
, что и
std::
chrono
::
year_month
(
ymwd.
year
(
)
, ymwd.
month
(
)
)
+
dm
, и те же
weekday()
и
index()
, что и
ymwd
.
Для длительностей, которые конвертируются как в
std::chrono::years
, так и в
std::chrono::months
, перегрузки
years
(3,4,6)
имеют приоритет, если вызов иначе был бы неоднозначным.
Примечания
Даже если
ymwd.
ok
(
)
возвращает
true
, результирующий
year_month_weekday
может не представлять корректную дату, если
ymwd.
index
(
)
равен
5
.
Пример
#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 года 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 года 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]