我确实在这里做了一些蠢事,但是我在编写简单的秒表课时遇到了麻烦。错误是:
/ usr / include / c ++ / 4.9 / chrono:246:2:错误:静态断言失败:rep 不能是一个持续时间
我想将两个std :: chrono :: high_resolution_clock之间的时间差异转换为毫秒。我确信这段代码曾经工作过(错误的记忆或者更好的标准可能会在2015年超过2013年)。
#include <iostream>
#include <chrono>
class Stopwatch final
{
public:
using elapsed_resolution = std::chrono::milliseconds;
using elapsed_duration = std::chrono::duration<std::chrono::milliseconds>;
Stopwatch()
{
Reset();
}
void Reset()
{
reset_time = clock.now();
}
elapsed_duration Elapsed()
{
return std::chrono::duration_cast<elapsed_resolution>(clock.now() - reset_time);
}
private:
std::chrono::high_resolution_clock clock;
std::chrono::high_resolution_clock::time_point reset_time;
};
int main(void)
{
auto s = Stopwatch();
std::cout << s.Elapsed().count() << std::endl;
}
答案 0 :(得分:2)
这一行:
using elapsed_duration = std::chrono::duration<std::chrono::milliseconds>;
需要是这样的:
using elapsed_duration = std::chrono::duration<float, std::milli>;