#define max(x,y) (((x)>(y))?(x):(y)) int x=6, y=2; cout << max(x++,y);
template < class T > max(T x, T y) {return x>y?x:y;} int x=6, y=2; cout << max(x++,y);
template < class T > class wrapper { protected: T Val; public: wrapper(T x) {Val=x;} operator T&() {return Val;} }; ... wrapper < int > i(7); if (i<8) ...