//这个是duration的实现
template <class Rep, class Period = ratio
<1> > class duration;
}
template <class Rep1, class Period1, class Rep2, class Period2>
struct common_type<duration<Rep1, Period1>,
duration<Rep2, Period2> >;
namespace chrono {
template <class Rep> struct treat_as_floating_point;
template <class Rep> struct duration_values;
template <class Rep1, class Period1, class Rep2, class Period2>
constexpr
typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2> >::type
operator+
(
const duration<Rep1, Period1>& lhs,
const duration<Rep2, Period2>& rhs);
template <class Rep1, class Period1, class Rep2, class Period2>
constexpr
typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2> >::type
operator-
(
const duration<Rep1, Period1>& lhs,
const duration<Rep2, Period2>& rhs);
template <class Rep1, class Period, class Rep2>
constexpr
duration<typename common_type<Rep1, Rep2>::type, Period>
operator*
(
const duration<Rep1, Period>& d,
const Rep2& s);
template <class Rep1, class Period, class Rep2>
constexpr
duration<typename common_type<Rep1, Rep2>::type, Period>
operator*
(
const Rep1& s,
const duration<Rep2, Period>& d);
template <class Rep1, class Period, class Rep2>
constexpr
duration<typename common_type<Rep1, Rep2>::type, Period>
operator/
(
const duration<Rep1, Period>& d,
const Rep2& s);
template <class Rep1, class Period1, class Rep2, class Period2>
constexpr
typename common_type<Rep1, Rep2>::type
operator/
(
const duration<Rep1, Period1>& lhs,
const duration<Rep2, Period2>& rhs);
#ifdef BOOST_CHRONO_EXTENSIONS
template <class Rep1, class Rep2, class Period>
constexpr
double operator/
(
const Rep1& s,
const duration<Rep2, Period>& d);
#endif
template <class Rep1, class Period1, class Rep2, class Period2>
constexpr bool operator==
(
const duration<Rep1, Period1>& lhs,
const duration<Rep2, Period2>& rhs);
template <class Rep1, class Period1, class Rep2, class Period2>
constexpr bool operator!=
(
const duration<Rep1, Period1>& lhs,
const duration<Rep2, Period2>& rhs);
template <class Rep1, class Period1, class Rep2, class Period2>
constexpr bool __duration__op_le_1(
const duration<Rep1, Period1>& lhs,
const duration<Rep2, Period2>& rhs);
template <class Rep1, class Period1, class Rep2, class Period2>
constexpr bool operator<=
(
const duration<Rep1, Period1>& lhs,
const duration<Rep2, Period2>& rhs);
template <class Rep1, class Period1, class Rep2, class Period2>
constexpr bool operator>
(
const duration<Rep1, Period1>& lhs,
const duration<Rep2, Period2>& rhs);
template <class Rep1, class Period1, class Rep2, class Period2>
constexpr bool operator>=
(
const duration<Rep1, Period1>& lhs,
const duration<Rep2, Period2>& rhs);
template <class ToDuration, class Rep, class Period>
constexpr
ToDuration duration_cast(const duration<Rep, Period>& d);
typedef duration<boost::int_least64_t, nano> nanoseconds;
typedef duration<boost::int_least64_t, micro> microseconds;
typedef duration<boost::int_least64_t, milli> milliseconds;
typedef duration<boost::int_least64_t> seconds;
typedef duration<boost::int_least32_t, ratio< 60> > minutes;
typedef duration<boost::int_least32_t, ratio<3600> > hours;
}
}
为什么duration会有两个模板参数呢,原因是Rep参数表示的是时间类型的周期,
然后ratio这个是比率,其实简单的理解就是你的时间的单位,所以这里用两个参数是很有道理的,
比如duration>这个代表的是以ratio<60>为单位的时间inteval用int类型表示;
duration> d_time(5.4)这个就错误了 因为不能吧double转成int
这里有一个
typename common_type<Rep1, Rep2>::type是确定两个类型的通用类型