Могу я использовать двойные двоеточия в #define
? Я хотел бы сохранить некоторые записи в файлах реализации, например вот так:
// foo.h
#define template template
#define foo:: foo::
template class foo {
T& baz();
};
#include "foo.tpp"
#undef template
#undef foo::
// foo.tpp
template T& foo::baz() {
// do stuff.
}
Но я получаю синтаксические ошибки, которых я не очень понимаю. (См. пример на кодовой панели ):
Строка 11: ошибка: отсутствует пробел после макроса name
Строка 10: ошибка: дополнительные токены в конце директивы #undef
Строка 4: ошибка: 'foo' не является шаблоном
компиляция прервана из-за -Wfatal-errors.