gpt4 book ai didi

c++ - static_cast(t) 编译速度比 std::forward(t) 快?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:01 25 4
gpt4 key购买 nike

最近,我在这里阅读了 range-v3 的提交评论: https://github.com/ericniebler/range-v3/commit/a4829172c0d6c43687ba213c54f430202efd7497

提交消息说,

marginally improve compile times by replacing std::forward with static_cast

我知道std::forward<T>(t)返回 static_cast<T&&>(t) , 按照标准。我也知道有时static_cast<T&&>(t)T &&t 时会正常工作是通过引用折叠规则的通用引用(或转发引用)。

我感兴趣的是提交消息说 static_cast略微提高编译性能。如果std::forward<T>(t)只返回 static_cast<T&&>(t) , 是什么导致编译性能如此不同?

也许会 std::forward<T>(t)无论如何都需要某种扣除?或者,std::forward<T>(t)做一些扼杀编译器的神奇事情?

最佳答案

每次你做std::forward<T>(t) ,编译器必须实例化几个模板:std::forward本身有两个重载,还有remove_reference这是函数签名的一部分。虽然这些模板不会生成太多代码,但它仍然需要完成模板实例化的工作。

对于大多数代码,这本质上是编译时的舍入错误。但是对于 Ranges TS,由于他们在那里进行的所有转发,这可能是非常重要的(尽管仍然是“微不足道的”)。

关于c++ - static_cast<T&&>(t) 编译速度比 std::forward<T>(t) 快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43350719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com