gpt4 book ai didi

c++ - 将参数传递给模板函数的方法

转载 作者:行者123 更新时间:2023-11-30 03:17:22 25 4
gpt4 key购买 nike

假设我有一个模板函数

template <typename T>
void do_sth(T const&);

对于某些类型(“小的”和可复制的),最好通过值而不是引用传递参数。

所以我的问题是:根据底层类型重载函数的最简单方法是什么?

备注:我得到的最好的是使用 enable_if有一些“简单”类型的条件。而且我相信标准库中没有“简单类型”这样的类型特征。如我错了请纠正我。此外:使用 enable_if因为 template <typename T, typename U> void do_sth(T, U) 函数接受更多模板参数(已编辑)而变得复杂需要 4 个重载:(value, value)、(value, ref)、(ref, value) 和 (ref, ref)。

最佳答案

不要这样做。模板函数被内联,一旦函数被内联,对 x 的引用就是一个没有标识的别名。

鼓励内联函数,而不是将 SFINAE 搞得一团糟,除非你已经证明这是一个重要的瓶颈。

在发现此功能比您可以优化的任何其他功能占用更多时间后,通过在几个关键案例中手动编写按值版本来测试其改进,以确保您真正获得 yield (我怀疑您会)。

关于c++ - 将参数传递给模板函数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55582484/

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