【发布时间】:2018-01-11 12:38:22
【问题描述】:
我注意到libcxx 中实现的std::chrono::duration 的一元+ 和- 运算符的返回类型为typename common_type<duration>::type。为什么它不像其他算术运算符那样简单地duration?
【问题讨论】:
-
p0548r1 有一些有用的参考资料,可能会有所启发
我注意到libcxx 中实现的std::chrono::duration 的一元+ 和- 运算符的返回类型为typename common_type<duration>::type。为什么它不像其他算术运算符那样简单地duration?
【问题讨论】:
这是 C++17 的更改。文档p0548r1 调整了operator+ 和operator- 的返回类型,以便duration 包含:
constexpr common_type_t<duration> operator+() const;
constexpr common_type_t<duration> operator-() const;
显然common_type_t 等价于common_type<duration>::type。其基本原理是与二进制operator+ 和operator- 保持一致。
【讨论】: