# operator+, operator-(std::chrono::time_point)

< cpp‎ | chrono‎ | time point

定义于头文件 `<chrono>` |  |
| (1) |
template< class C, class D1, class R2, class P2 > time_point<C, typename std::common_type<D1, duration<R2,P2>>::type> operator+( const time_point<C,D1>& pt, const duration<R2,P2>& d ); |  | (C++11 起) (C++14 前)
template< class C, class D1, class R2, class P2 > constexpr time_point<C, typename std::common_type<D1, duration<R2,P2>>::type> operator+( const time_point<C,D1>& pt, const duration<R2,P2>& d ); |  | (C++14 起)
| (2) |
template< class R1, class P1, class C, class D2 > time_point<C, typename std::common_type<duration<R1,P1>,D2>::type> operator+( const duration<R1,P1>& d, const time_point<C,D2>& pt ); |  | (C++11 起) (C++14 前)
template< class R1, class P1, class C, class D2 > constexpr time_point<C, typename std::common_type<duration<R1,P1>,D2>::type> operator+( const duration<R1,P1>& d, const time_point<C,D2>& pt ); |  | (C++14 起)
| (3) |
template< class C, class D1, class R2, class P2 > time_point<C, typename std::common_type<D1, duration<R2,P2>>::type> operator-( const time_point<C,D1>& pt, const duration<R2,P2>& d ); |  | (C++11 起) (C++14 前)
template< class C, class D1, class R2, class P2 > constexpr time_point<C, typename std::common_type<D1, duration<R2,P2>>::type> operator-( const time_point<C,D1>& pt, const duration<R2,P2>& d ); |  | (C++14 起)
| (4) |
template< class C, class D1, class D2 > typename std::common_type<D1,D2>::type operator-( const time_point<C,D1>& pt_lhs, const time_point<C,D2>& pt_rhs ); |  | (C++11 起) (C++14 前)
template< class C, class D1, class D2 > constexpr typename std::common_type<D1,D2>::type operator-( const time_point<C,D1>& pt_lhs, const time_point<C,D2>& pt_rhs ); |  | (C++14 起)

进行涉及 `time_point` 的加减运算。

1-2) 应用偏移 `d` 到 `pt` 。等效于返回 CT(pt.time_since_epoch() + d) ，其中 `CT` 为返回类型。
3) 以负方向应用偏移 `d` 到 `pt` 。等效于返回 CT(pt.time_since_epoch() - d) ，其中 `CT` 为返回类型。
4) 计算 `pt_lhs` 与 `pt_rhs` 之间的差。

### 参数

pt | - | 要应用偏移到的时间点
d | - | 时间偏移
pt_lhs, pt_rhs | - | 用于提取差的时间点

### 返回值

1-3) 由应用偏移 `d` 产生的时间点。
4) 时间点之间的时长。

### 异常

可能抛出实现定义的异常。

### 缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

DR | 应用于 | 出版时的行为 | 正确行为
--- | --- | --- | ---
LWG 2739 | C++11 | pt - d 对无符号 `duration` 行为不规律 | 更正行为

### 参阅

operator+=operator-= | 以给定的 duration 修改 time_point (公开成员函数)