gpt4 book ai didi

c++ - 您如何决定模板方法的值(value)与引用

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

如果我有一个像这样的模板函数

template<typename T>
void doSomething(const T arg) {.....}

然后我不知道 T 是一个简单的 int 还是一个巨大的结构。如果它是一个 int,按值传递是有意义的,而结构应该按引用传递。

我如何设计一个模板函数来合理地处理两种类型的参数?

最佳答案

boost::call_traits 图书馆有几个这样的 helper 。特别是,call_traits<T>::param_type

Defines a type that represents the "best" way to pass a parameter of type T to a function.

你可以这样使用它:

template<typename T>
void doSomething(typename boost::call_traits<T>::param_type arg) {.....}

它基本上是通过为特殊情况专门化类来工作的。因此,例如,您的 int问题中的案例(间接)专门针对 int (而不是 int & )。

关于c++ - 您如何决定模板方法的值(value)与引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38912547/

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