Макрос + шаблон = не компилится
От: SergH Россия  
Дата: 08.10.04 13:25
Оценка:
Все здравствуйте.

Вот такой код:

#define TYPEDEF_AS_BASE( t ) typedef t Base;

template<class T1, class T2>
class Some
{
};

TYPEDEF_AS_BASE(Some< int, char >)

void main()
{
}


Не компилится. Сначала идёт объясняющее всё предупреждение:

warning C4002: too many actual parameters for macro 'TYPEDEF_AS_BASE'


А потом ещё несколько ошибок.
Очевидно, препроцессор неправильно истолковвывает запятую в
TYPEDEF_AS_BASE(Some< int, char >)


Проблема в том, что как-то иначе он её толковать не может — компилятор ещё даже не запустился. Скобки помогают успокоить перпроцессор, но, так как выражение

typedef (Some<int, char>) Base;


Отвергается компилятором, не спасают ситуацию в целом.
Подскажите, как с этим бороться. Запускаю на VC 6 и 2003
Делай что должно, и будь что будет
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.