And*_*zos 2 c++ c++-chrono c++17
我显然太愚蠢了,不能使用C++ 17 <chrono>库.编译以下内容......
#include <chrono>
#include <iostream>
int main() {
using clock = std::chrono::steady_clock;
using duration = std::chrono::duration<double, std::chrono::seconds>;
using timepoint = std::chrono::time_point<clock, duration>;
timepoint t0 = clock::now();
for (int i = 0; i < 1000; i++) {
timepoint t = clock::now();
duration d = t-t0;
double seconds = d.count();
std::cout << seconds << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
我明白了......
/usr/include/c++/8/chrono:319:16: error: static assertion failed:
period must be a specialization of ratio
static_assert(__is_ratio<_Period>::value,
^~~~~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
第二个类型参数std::chrono::duration需要是一个比率(每秒滴答数),而不是另一个持续时间(参见https://en.cppreference.com/w/cpp/chrono/duration).std::chrono::seconds是一个持续时间.你想要这个:
using duration = std::chrono::duration<double, std::ratio<1> >;
Run Code Online (Sandbox Code Playgroud)
仅供参考std::chrono::seconds,基本上是一个std::chrono::duration<some integer type, std::ratio<1> >; 你的持续时间类型有点像seconds但有浮点数而不是整数.