C++ c++;11.使用chrono作为语法糖

C++ c++;11.使用chrono作为语法糖,c++,c++11,C++,C++11,我使用外部库中的函数,接口如下:void f(int timeout)。 其中,timeout以毫秒为单位。为了使我的代码更具可读性,我希望以以下形式使用chrono: f(std::chrono::milliseconds(10).count()); 有没有可能std::chrono::毫秒(10).count()!=10 是否有任何“水下岩石”阻止现代编译器(clang、gcc、VC++)将f(std::chrono::millists(10).count())转换为f(10) 不会。但要

我使用外部库中的函数,接口如下:
void f(int timeout)。
其中,
timeout
以毫秒为单位。为了使我的代码更具可读性,我希望以以下形式使用
chrono

f(std::chrono::milliseconds(10).count());
  • 有没有可能
    std::chrono::毫秒(10).count()!=10

  • 是否有任何“水下岩石”阻止现代编译器(clang、gcc、VC++)将
    f(std::chrono::millists(10).count())
    转换为
    f(10)

  • 不会。但要注意,结果不是毫秒,而是滴答声。所以
    std::chrono::seconds(10)。count()也是10。因此,您可能需要首先对
    std::chrono::millizes
    变量进行赋值

  • 否,因为该方法是
    constexpr
    。所以任何好的编译器都应该尊重这一点

  • 不会。但要注意,结果不是毫秒,而是滴答声。所以
    std::chrono::seconds(10)。count()也是10。因此,您可能需要首先对
    std::chrono::millizes
    变量进行赋值

  • 否,因为该方法是
    constexpr
    。所以任何好的编译器都应该尊重这一点

  • 有没有可能
    std::chrono::毫秒(10).count()!=10
  • 否。您正在使用的是:

    3) 用
    r
    记号构造持续时间

    简单地说:

    返回此持续时间的刻度数


  • 是否有任何“水下岩石”阻止现代编译器(clang、gcc、VC++)将
    f(std::chrono::millists(10).count())
    转换为
    f(10)
  • 没有。
    duration
    构造函数是
    constexpr
    ,您正在使用的
    count()
    成员函数也是如此-对于编译器来说,这应该是一个非常简单的优化


    使我的代码更具可读性[…]

    就我个人而言,我觉得这很可疑。如果
    f()
    本身需要一个
    持续时间
    ,那么
    f(std::chrono::millises(10))
    本身肯定比
    f(10)
    好,还有一个额外的好处,那就是无论你传入什么持续时间都能正常工作。但是如果只需要一个
    int
    ,你只需要更多的输入就可以给自己一种安全的错觉。所以我个人不确定这是否更好

  • 有没有可能
    std::chrono::毫秒(10).count()!=10
  • 否。您正在使用的是:

    3) 用
    r
    记号构造持续时间

    简单地说:

    返回此持续时间的刻度数


  • 是否有任何“水下岩石”阻止现代编译器(clang、gcc、VC++)将
    f(std::chrono::millists(10).count())
    转换为
    f(10)
  • 没有。
    duration
    构造函数是
    constexpr
    ,您正在使用的
    count()
    成员函数也是如此-对于编译器来说,这应该是一个非常简单的优化


    使我的代码更具可读性[…]


    就我个人而言,我觉得这很可疑。如果
    f()
    本身需要一个
    持续时间
    ,那么
    f(std::chrono::millises(10))
    本身肯定比
    f(10)
    好,还有一个额外的好处,那就是无论你传入什么持续时间都能正常工作。但是如果只需要一个
    int
    ,你只需要更多的输入就可以给自己一种安全的错觉。所以我个人不确定这是否更好

    一个持续时间的计数本身是没有意义的,当你将它与另一个持续时间比较时才有意义。你也应该考虑使用<代码>运算符“MS < /COD>”。不是编写代码>代码:ST:::毫秒(10)只写<代码> 10ms 。语义糖一个持续时间的计数本身就没有意义,当你将它与另一个持续时间进行比较时,它才有意义。你还应该考虑使用<代码>运算符“MS < /Cord>”。不要写
    std::chrono::毫秒(10)
    只要写
    10ms
    。所以你认为,当你看到
    f(10)
    在code中,您需要打开文档以找出接受超时的单位
    f
    f(std::chrono::millides(10.count())
    哪个文档本身?@user1244932,并且
    f
    是否以秒为单位超时?无论哪种方式,它都不再是自文档化的
    f(10);//毫秒
    或等效值。所以你认为,当你看到
    f(10)
    在code中,您需要打开文档以找出接受超时的单位
    f
    f(std::chrono::millides(10.count())
    哪个文档本身?@user1244932,并且
    f
    是否以秒为单位超时?无论哪种方式,它都不再是自文档化的
    f(10);//毫秒
    或等效值。