我想编写一个通用函数,它接受一个引用 x 和一个值 y,如果 y 大于 x,则将 x 分配给 y。(性能关键)
这是我所拥有的:
template<class X, class Y>
inline void chmax(X& x, const Y& y) { if (y > x) x = y; }
这是最好的方法吗?
我担心参数类型“const Y&”,如果我只使用“Y”会有什么区别?两种不同方式中的一种会与优化器混淆吗?如果 Y 是 POD 类型呢?这会强制它调用addressof,将指针传递给int,然后取消引用指针吗?
(如果两者不同,我对通用 C++ 答案和 C++11 特定答案都感兴趣。)