【问题标题】:Pass std::chrono::duration by value or by reference to const?通过值或引用 const 传递 std::chrono::duration?
【发布时间】:2016-06-20 08:49:16
【问题描述】:

所以过去我通过引用 const 传递 std::chrono::duration 值,但现在我认为它们只不过是包装在一个类中的单个算术类型,因此按值传递它是有意义的。

有人介绍过吗?

【问题讨论】:

    标签: c++ performance c++11 chrono


    【解决方案1】:

    根据规范,duration 包装了

    中指定的 Rep 类型的单个变量(滴答数)
    template<
        class Rep, 
        class Period = std::ratio<1> 
    > class duration;
    

    所以基本上你可以选择处理复制/传递 const ref,就像你为那个 Rep 类型做的那样。 当我以前使用 chromo::duration 时,我选择它为 long,在这种情况下,我看不到通过 const 引用传递的理由,(尤其是在我的架构中,long 和地址都是 8 个字节时)

    【讨论】:

      【解决方案2】:

      我认为它们只不过是一种封装的算术类型

      看看cppreference.com

      持续时间中存储的唯一数据是 Rep 类型的滴答计数。如果 Rep 是浮点数,则持续时间可以表示滴答的分数。 Period 包含在持续时间类型中,仅在不同持续时间之间转换时使用。

      和:

      tick 周期是编译时有理常数

      你猜对了

      【讨论】:

        猜你喜欢
        • 2018-02-03
        • 1970-01-01
        • 1970-01-01
        • 2021-12-29
        • 2012-06-03
        • 2016-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多