我想写一个带参考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&amp;”,如果我把它设为“Y”会有什么区别?两种不同方式中的一种会与优化器混淆吗?如果Y是POD类型怎么办?这会强制它调用addressof,将指针传递给int,然后取消引用指针吗?
(如果两者不同,我对通用C ++答案以及C ++ 11特定答案感兴趣。)