std::chrono::year_month_day::operator+=, std::chrono::year_month_day::operator-=
来自cppreference.com
< cpp | chrono | year month day
constexpr std::chrono::year_month_day& operator+=(const std::chrono::years& dy) const noexcept; |
(1) | (C++20 起) |
constexpr std::chrono::year_month_day& operator+=(const std::chrono::months& dm) const noexcept; |
(2) | (C++20 起) |
constexpr std::chrono::year_month_day& operator-=(const std::chrono::years& dy) const noexcept; |
(3) | (C++20 起) |
constexpr std::chrono::year_month_day& operator-=(const std::chrono::months& dm) const noexcept; |
(4) | (C++20 起) |
以时长 dy
或 dm
为程度修改时间点 *this
。
1) 等价于 *this = *this + dy;
2) 等价于 *this = *this + dm;
3) 等价于 *this = *this - dy;
4) 等价于 *this = *this - dm;
注意
能从 year_month_day
直接加或减可转换到 std::chrono::months 但不可转换到 std::chrono::years 的时长。可转换到 std::chrono::years 的时长不能如此,因为这些时长亦可转换到 std::chrono::months ,导致歧义:
using namespace std::chrono; using decades = duration<int, std::ratio_multiply<std::ratio<10>, years::period>>; using kilomonths = duration<int, std::ratio_multiply<std::kilo, months::period>>; auto ymd = 2001y/April/10; ymd += decades{1}; // 错误:歧义 ymd += kilomonths{1}; // OK
参阅
将 year_month_day 与一定量的年数或月数相加或相减 (公开成员函数) |