gpt4 book ai didi

c++ - period 必须是 C++17 chrono 库中 ratio 的特化吗?

转载 作者:搜寻专家 更新时间:2023-10-31 00:25:49 25 4
gpt4 key购买 nike

我显然太笨了,不会使用 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;
}
}

我明白了...

/usr/include/c++/8/chrono:319:16: error: static assertion failed:
period must be a specialization of ratio
static_assert(__is_ratio<_Period>::value,
^~~~~~~~~~~~~~~~~~~

有什么想法吗?

最佳答案

std::chrono::duration 的第二个类型参数需要是一个比率(每秒滴答声),而不是另一个持续时间(参见 https://en.cppreference.com/w/cpp/chrono/duration )。 std::chrono::seconds是一个持续时间。你会想要这个:

using duration = std::chrono::duration<double, std::ratio<1> >;

仅供引用 std::chrono::seconds基本上是一个 std::chrono::duration<some integer type, std::ratio<1> > ;您的持续时间类型有点像 seconds但使用 float 而不是整数。

关于c++ - period 必须是 C++17 chrono 库中 ratio 的特化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54740973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com