template<typename T>
inline void callwihtMax(const T& a, const T & b)
{
f(a > b ? a : b);
}
这个template产出一整群函数,每个函数都接受两个同类型对象,并以其中较大者调用f。
这里不需要在函数本题中为参数加上括号,也不需要操心参数被核算多次等等
此外由于callwihtMax是个真正的函数,他遵守作用域和访问规则。
例如你绝对可以写出一个“class内的private inline函数”。
一般而言,宏无法完成此事。