考虑以下函数:
template <class T, class Priority>
void MutableQueue<T, Priority>::update(const T& item, const Priority& priority)
{
...
}
如果优先级类型适合寄存器,现代 x86-64 编译器是否足够智能以通过值而不是引用传递优先级参数?
最佳答案
编译器可能会进行优化,但不是强制性的。
要强制通过“最佳”类型,您可以使用 boost: http://www.boost.org/doc/libs/1_55_0/libs/utility/call_traits.htm
替换 const T&
(按值传递是正确的) call_traits<T>::param_type
.
所以你的代码可能会变成:
template <class T, class Priority>
void MutableQueue<T, Priority>::update(call_traits<T>::param_type item,
call_traits<Priority>::param_type priority)
{
...
}
关于c++ - 将原始类型的常量引用作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30005545/