std::chrono::duration::duration

来自cppreference.com
< cpp‎ | chrono‎ | duration
 
 
 
 
 
constexpr duration() = default;
(1) (C++11 起)
duration( const duration& ) = default;
(2) (C++11 起)
template< class Rep2 >
constexpr explicit duration( const Rep2& r );
(3) (C++11 起)
template< class Rep2, class Period2 >
constexpr duration( const duration<Rep2,Period2>& d );
(4) (C++11 起)

从数个可选数据源之一构造新的 duration

1) 默认构造函数设为默认。
2) 复制构造函数设为默认(进行计次数的逐位复制)。
3) 构造拥有计次 r 的时期。注意此构造函数仅若 Rep2 (参数类型)能隐式转换为 rep (时期的计次类型)且满足下列条件才参与重载决议
(即,拥有整数计次的时期不能从浮点值构造,但拥有浮点计次的时期能从整数值构造)
4) 通过转换 d 到确切的周期和计次构造时期,如同用 std::chrono::duration_cast<duration>(d).count() 。为避免转换时截断,此构造函数仅若转换不引入溢出且:
或满足下列条件才参与重载决议:
(即要么时期使用浮点计次,要么 Period2 能为周期整除)

[编辑] 参数

r - 计次数
d - 从之复制的时期

[编辑] 示例

下列代码展示数个如何构造时期的示例(合法者与非法者):

#include <chrono>
int main()
{
    std::chrono::hours h(1); // 一小时
    std::chrono::milliseconds ms{3}; // 3 毫秒
    std::chrono::duration<int, std::kilo> ks(3); // 3000 秒
 
    // 错误: treat_as_floating_point<int>::value == false,
    // 此时期只允许整数计次
//  std::chrono::duration<int, std::kilo> d3(3.5);
 
    // 使用小数计次的 30Hz 钟
    std::chrono::duration<double, std::ratio<1, 30>> hz30(3.5);
 
    // 从 3 毫秒构造 3000 微秒
    std::chrono::microseconds us = ms;
    // error: 1/1000000 is not divisible by 1/1000
//  std::chrono::milliseconds ms2 = us
    std::chrono::duration<double, std::milli> ms2 = us; // 3.0 微秒
}


[编辑] 参阅

赋值内容
(公开成员函数) [编辑]