function template
<chrono>

std::chrono::duration_cast

template <class ToDuration, class Rep, class Period>  constexpr ToDuration duration_cast (const duration<Rep,Period>& dtn);
Duration cast
dtn 的值转换为另一种 duration 类型,同时考虑它们 period 的差异。

该函数不使用隐式转换。相反,所有 count 值在内部被转换为最宽的表示形式(即内部 count 类型的 common_type),然后显式地使用static_cast.

转换为目标类型。如果目标类型精度较低,则值将被截断。

参数

dtn
一个 duration 对象。

返回值

dtn 的值转换为类型为ToDuration.
ToDurationduration 对象。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// duration_cast
#include <iostream>     // std::cout
#include <chrono>       // std::chrono::seconds, std::chrono::milliseconds
                        // std::chrono::duration_cast

int main ()
{
  std::chrono::seconds s (1);             // 1 second
  std::chrono::milliseconds ms = std::chrono::duration_cast<std::chrono::milliseconds> (s);

  ms += std::chrono::milliseconds(2500);  // 2500 millisecond

  s = std::chrono::duration_cast<std::chrono::seconds> (ms);   // truncated

  std::cout << "ms: " << ms.count() << std::endl;
  std::cout << "s: " << s.count() << std::endl;

  return 0;
}

输出
ms: 3500
s: 3


另见