为什么有一个静态函数返回 std::chrono::duration 类型的零表示形式?
不是:
std::chrono seconds s;
s = std::chrono::seconds(0);
Run Code Online (Sandbox Code Playgroud)
与以下完全相同:
std::chrono::seconds s;
s = std::chrono::seconds::zero()
Run Code Online (Sandbox Code Playgroud)
?
是否有一个通用的 chrono::duration::zero 对象/函数,它可以隐式转换为每个持续时间类型?这在非模板情况下可能很有用。
seconds s = durationZero;
minutes m = durationZero;
Run Code Online (Sandbox Code Playgroud)
这样,更改持续时间类型/精度不会影响“零分配”。
这是为了在 的持续时间zero不由 表示的情况下,为实现提供一定的灵活性Rep(0)。
std::chrono::duration<Rep,Period>::零
\n\n\n如果持续时间的表示
\nrep需要某种其他实现来返回零长度持续时间,std::chrono::duration_values则可以专门返回所需的值。
如果您使用,这不会成为问题,std::chrono::seconds(0)但如果您使用模板,则some_duration::zero()表示持续时间为零,但some_duration(0)也可能不会。
或者,如果您想弄清楚是否已经过去了一段时间,并且您不能或不想对类型做出任何假设duration。
auto t1 = some_clock::now();\n\n// so something\n\nauto t2 = some_clock::now();\nsome_clock::duration d = t2 - t1; // where you don\'t want to make any assumtions about duration\n\nif ( d == some_clock::duration::zero() ) {\n // no time elapsed according to some_clock\n}\nRun Code Online (Sandbox Code Playgroud)\n您可能总是能够转换为其他表示形式,但是如果您想获得零持续时间 if基于模板参数,那么std::chrono::seconds(0)使用它会更清晰。some_duration::zero()some_duration
我从未遇到过这样的用例,而且我目前也找不到有意义的示例。我想到的唯一一件事是与温度相关,如果你愿意的话,它zero总是 0\xc2\xb0C,因此对于 \xc2\xb0F 和 \xc2\xb0K 它将返回不同的值zero。