[英]c++11 use chrono as syntactic sugar
我使用来自外部库的函数,其接口如下: void f(int timeout);
。 timeout
以毫秒为单位。 为了使代码更具可读性,我想以以下形式使用chrono
:
f(std::chrono::milliseconds(10).count());
std::chrono::milliseconds(10).count() != 10
吗?
是否有任何阻止现代编译器(clang,gcc,VC ++)将f(std::chrono::milliseconds(10).count())
为f(10)
“水下岩石”?
std::chrono::milliseconds(10).count() != 10
吗?
不。您使用的duration
构造函数可以:
3)构造一个带有
r
滴答的持续时间。
和count()
简单地:
返回此持续时间的滴答数。
- 是否有任何阻止现代编译器(clang,gcc,VC ++)将
f(std::chrono::milliseconds(10).count())
为f(10)
“水下岩石”?
不。 duration
构造函数是constexpr
,您正在使用的count()
成员函数也是如此-对于编译器而言,这应该是一个非常简单的优化。
为了使我的代码更具可读性[...]
我个人认为这值得怀疑。 如果f()
本身花费了一个duration
,则f(std::chrono::milliseconds(10))
本身肯定比仅f(10)
更好,而且附加的好处是无论您传递的持续时间如何都能正常工作。 但是,如果只需要输入int
,您就可以通过输入更多内容来给自己一种安全的错觉。 所以我不确定个人情况是否会更好。
不。但是请注意结果不是毫秒,而是滴答声。 因此std::chrono::seconds(10).count()
也为10。因此,您可能想先对std::chrono::milliseconds
变量进行赋值。
不可以,因为该方法是constexpr
。 因此,任何好的编译器都应该尊重这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.