c++ - 将原始类型的常量引用作为函数参数传递

标签 c++ compiler-optimization

考虑以下函数:

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/

相关文章:

c++ - 如何将二进制数据写入压缩文件

c++ - WM_DROPFILES 之后 free() 上的堆损坏

C++ 如何防止无效输入?

c++ - 无论如何有一个多维 map ?

c - GCC 如何优化循环内递增的未使用变量?

c++ - O2 优化级别中断程序工作

c++ - 使用 FFmpeg 将原始 RGB32 文件转换为 JPEG 或 PNG

c++ - RVO 何时显示出最大的性能影响?

java - Java编译器是否通过删除方法来优化调用一次的方法?

在 C 中控制对内存映射寄存器的读写访问宽度