Скажем, у нас есть такой макрос
#define FOO(type,name) type name
Что мы могли бы использовать как
FOO(int, int_var);
Но не всегда так просто:
FOO(std::map<int, int>, map_var); // error: macro "FOO" passed 3 arguments, but takes just 2
Конечно, мы могли бы сделать:
typedef std::map<int, int> map_int_int_t;
FOO(map_int_int_t, map_var); // OK
который не очень эргономичен. Следует учитывать и несовместимости типа Плюс. Любая идея, как разрешить это с помощью макроса?