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

Jan*_*sis 7 c++ compiler-optimization

考虑以下功能:

template <class T, class Priority>
void MutableQueue<T, Priority>::update(const T& item, const Priority& priority)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

如果优先级类型可以放在寄存器中,那么现代x86-64编译器是否足够智能以按值传递优先级参数而不是引用?

edm*_*dmz 0

这完全依赖于平台和编译器,参数传递给函数的方式也是如此。
这些细节在程序运行的系统的 ABI 中定义;有些有大量寄存器,因此主要使用它们。有些将它们全部压入堆栈。有些将它们混合在一起直至第 N 个参数。

再说一次,它是你不能依赖的东西;不过,您可以通过多种方式进行检查。C++语言没有寄存器的概念。