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