For this particular project, I am not able to use C++11 features (e.g. decltype
) because the compiler does not yet support them. I need to be able to provide the current class as a template parameter, preferably within a macro without an argument (see below), without dressing up the class
declaration or hiding curly braces, etc.
class Foo: private Bar<Foo> {
MAGIC //expands to using Bar<Foo>::Baz; and some others
public:
void otherFunction();
//... the rest of the class
};
Ideally, I'd like this to work very much like Qt's Q_OBJECT
macro, but without introducing another pre-compile step and associated generated classes. typeid
might be useful at runtime, but my goal is to accomplish all of this at build.
How do I write the MAGIC
macro so that I don't need to repeat the class name each time?