Effective C++ - 条款2 - 使用inline template函数替换函数宏
为什么?
即使给函数宏加上了小括号,如下
#define F(a,b) f((a)>(b)?(a):(b))
但仍会在使用++运算符时产生问题
F(++a,b)
// 替换为
f((++a)>(b)?(++a):(b))
怎么做
永远使用inline template替换函数宏
template <typename T>
inline void F(const T& a, const T& b)
{
f(a>b?a:b);
}
本文来自博客园,作者:ijpq,转载请注明原文链接:https://www.cnblogs.com/ijpq/p/16597223.html