¿Puedo usar dos puntos dobles en #define
? Me gustaría guardar algo de escritura en los archivos de implementación, p. como este:Use dos puntos dobles (: :) en #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.
}
Pero obtengo errores de sintaxis que realmente no entiendo. (Ver un ejemplo en codepad):
Line 11: error: missing whitespace after the macro name
Line 10: error: extra tokens at end of #undef directive
Line 4: error: 'foo' is not a template
compilation terminated due to -Wfatal-errors.
Pregunta bien hecha, pero publicaría los errores de sintaxis que obtienes también –
Eso me parece una idea realmente mala, incluso si funcionó (lo que gracias a Dios no es así). Nadie podría entender o mantener tu código. Tus sucesores pegarán alfileres a tu semejanza. – TonyK