#include using namespace std; #define MACRO( A, B ) \ cout << A << ", " << B << endl; int f( int a, int b ) { return a + b; } template< int a, int b > int g() { return a + b; } #define TEMPL2( A, B ) < A, B > #define TEMPL3( A, B, C ) < A, B, C > int main() { MACRO( 1, 3 ) MACRO( f( 1, 3 ), 3 ) MACRO( g TEMPL2( 1, 3 )(), 3 ) return 0; }