首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >std::the::the::zero()的目的是什么

std::the::the::zero()的目的是什么
EN

Stack Overflow用户
提问于 2020-11-17 14:45:00
回答 1查看 516关注 0票数 4

为什么会有一个静态函数返回std::chrono::工期类型的零表示?

不是:

代码语言:javascript
运行
复制
std::chrono seconds s;
s = std::chrono::seconds(0);

与以下完全相同:

代码语言:javascript
运行
复制
std::chrono::seconds s;
s = std::chrono::seconds::zero()

是否有一个一般的时间序列::工期::零对象/函数,它将隐式转换为每种持续时间类型?这在非模板情况下可能很有用。

代码语言:javascript
运行
复制
seconds s = durationZero;
minutes m = durationZero;

这样,更改持续时间类型/精度不会影响“零赋值”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-17 14:52:53

它为实现提供了一定的灵活性,在zero的持续时间不是由Rep(0)表示的情况下。

std::chrono::duration::zero

如果表示持续时间的rep需要一些其他实现才能返回零长度持续时间,则std::chrono::duration_values可以专门用于返回所需的值。

如果使用std::chrono::seconds(0),这不会是一个问题,但是如果使用模板,那么some_duration::zero()将表示为零持续时间,但some_duration(0)可能不会。

或者,如果您想知道是否过了一段时间,并且不能或不想对duration类型做任何假设。

代码语言:javascript
运行
复制
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是基于模板参数的,那么使用some_duration::zero()就更清楚了。

我从来没有遇到过这样的用例,而且我目前也找不到有意义的例子。我脑海中唯一想到的是温度,如果你想要的话,zero总是0°C,所以对于°F和°K,它会为zero返回不同的值。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64877472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档