[time.duration.general] (original) (raw)
30 Time library [time]
30.5 Class template duration [time.duration]
30.5.1 General [time.duration.general]
A duration type measures time between two points in time (time_points).
A duration has a representation which holds a count of ticks and a tick period.
The tick period is the amount of time which occurs from one tick to the next, in units of seconds.
It is expressed as a rational constant using the template ratio.
namespace std::chrono { template<class Rep, class Period = ratio<1>> class duration { public: using rep = Rep;using period = typename Period::type;private: rep rep_; public: constexpr duration() = default;template<class Rep2> constexpr explicit duration(const Rep2& r);template<class Rep2, class Period2> constexpr duration(const duration<Rep2, Period2>& d);~duration() = default; duration(const duration&) = default; duration& operator=(const duration&) = default;constexpr rep count() const;constexpr common_type_t<duration> operator+() const;constexpr common_type_t<duration> operator-() const;constexpr duration& operator++();constexpr duration operator++(int);constexpr duration& operator--();constexpr duration operator--(int);constexpr duration& operator+=(const duration& d);constexpr duration& operator-=(const duration& d);constexpr duration& operator*=(const rep& rhs);constexpr duration& operator/=(const rep& rhs);constexpr duration& operator%=(const rep& rhs);constexpr duration& operator%=(const duration& rhs);static constexpr duration zero() noexcept;static constexpr duration min() noexcept;static constexpr duration max() noexcept;};}
Rep shall be an arithmetic type or a class emulating an arithmetic type.
If duration is instantiated with a duration type as the argument for the template parameter Rep, the program is ill-formed.
If Period is not a specialization of ratio, the program is ill-formed.
If Period::num is not positive, the program is ill-formed.
Members of duration do not throw exceptions other than those thrown by the indicated operations on their representations.
The defaulted copy constructor of duration shall be a constexpr function if and only if the required initialization of the member rep_ for copy and move, respectively, would be constexpr-suitable ([dcl.constexpr]).
[Example 1: duration<long, ratio<60>> d0; duration<long long, milli> d1; duration<double, ratio<1, 30>> d2; — _end example_]