std::common_type(std::chrono::duration)
定义于头文件 <chrono>
|
||
template <class Rep1, class Period1, class Rep2, class Period2> struct common_type<std::chrono::duration<Rep1, Period1>, |
(C++11 起) | |
暴露名为 type
的类型,它是二个 std::chrono::duration 的共用类型,其周期为 Period1
与 Period2
的最大公约数。
注解
产生的时长的周期能通过构成 Period1::num 和 Period2::num 的最大公约数与 Period1::den 和 Period2::den 的最小公倍数的 ratio
计算。
示例
运行此代码
#include <iostream> #include <chrono> // std::chrono 已找到最大公约数,类似使用 std::common_type<> 。 // 我们令类型推导外化。 template <typename T,typename S> auto durationDiff(const T& t, const S& s) -> typename std::common_type<T,S>::type { typedef typename std::common_type<T,S>::type Common; return Common(t) - Common(s); } int main() { typedef std::chrono::milliseconds milliseconds; typedef std::chrono::microseconds microseconds; auto ms = milliseconds(30); auto us = microseconds(1100); std::cout << ms.count() << "ms - " << us.count() << "us = " << durationDiff(ms,us).count() << "\n"; }
输出:
30ms - 1100us = 28900
参阅
(C++11) |
确定一组类型的公共类型 (类模板) |