Используйте двойные двоеточия (: :) в #define

Могу я использовать двойные двоеточия в #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.

15
задан Brian Tompsett - 汤莱恩 23 June 2016 в 15:53
поделиться