std::chrono::duration::zero() 的目的是什么
What is the purpose of std::chrono::duration::zero()
为什么有一个静态函数 returns std::chrono::duration 类型的零表示?
不是:
std::chrono seconds s;
s = std::chrono::seconds(0);
完全相同:
std::chrono::seconds s;
s = std::chrono::seconds::zero()
?
是否有一个通用的 chrono::duration::zero object/function,可以隐式转换为每个持续时间类型?这在非模板情况下可能很有用。
seconds s = durationZero;
minutes m = durationZero;
这样,更改持续时间 type/precision 不会影响“零分配”。
是为了在zero
的持续时间不是Rep(0)
的情况下实现一些灵活性。
std::chrono::duration<Rep,Period>::zero
If the representation rep
of the duration requires some other implementation to return a zero-length duration, std::chrono::duration_values
can be specialized to return the desired value.
如果您使用 std::chrono::seconds(0)
不会有问题,但如果您使用模板,则 some_duration::zero()
将代表零持续时间,但 some_duration(0)
可能不会。
或者,如果您想弄清楚是否已经过去了一段时间,并且您不能或不想对 duration
类型做出任何假设。
auto t1 = some_clock::now();
// so something
auto t2 = some_clock::now();
some_clock::duration d = t2 - t1; // where you don't want to make any assumtions about duration
if ( d == some_clock::duration::zero() ) {
// no time elapsed according to some_clock
}
您可能总是能够将 std::chrono::seconds(0)
转换为其他表示,但是如果 some_duration
基于模板参数。
我从未遇到过这方面的用例,目前我也找不到有意义的示例。我唯一想到的是温度相关,如果你想要 zero
总是 0°C,所以对于 °F 和 °K,return zero
的不同值.
为什么有一个静态函数 returns std::chrono::duration 类型的零表示?
不是:
std::chrono seconds s;
s = std::chrono::seconds(0);
完全相同:
std::chrono::seconds s;
s = std::chrono::seconds::zero()
?
是否有一个通用的 chrono::duration::zero object/function,可以隐式转换为每个持续时间类型?这在非模板情况下可能很有用。
seconds s = durationZero;
minutes m = durationZero;
这样,更改持续时间 type/precision 不会影响“零分配”。
是为了在zero
的持续时间不是Rep(0)
的情况下实现一些灵活性。
std::chrono::duration<Rep,Period>::zero
If the representation
rep
of the duration requires some other implementation to return a zero-length duration,std::chrono::duration_values
can be specialized to return the desired value.
如果您使用 std::chrono::seconds(0)
不会有问题,但如果您使用模板,则 some_duration::zero()
将代表零持续时间,但 some_duration(0)
可能不会。
或者,如果您想弄清楚是否已经过去了一段时间,并且您不能或不想对 duration
类型做出任何假设。
auto t1 = some_clock::now();
// so something
auto t2 = some_clock::now();
some_clock::duration d = t2 - t1; // where you don't want to make any assumtions about duration
if ( d == some_clock::duration::zero() ) {
// no time elapsed according to some_clock
}
您可能总是能够将 std::chrono::seconds(0)
转换为其他表示,但是如果 some_duration
基于模板参数。
我从未遇到过这方面的用例,目前我也找不到有意义的示例。我唯一想到的是温度相关,如果你想要 zero
总是 0°C,所以对于 °F 和 °K,return zero
的不同值.