Для этого конкретного проекта я не могу использовать возможности С++ 11 (например, decltype
), потому что компилятор еще не поддерживает их. Мне нужно предоставить текущий класс в качестве параметра шаблона, предпочтительно внутри макроса без аргумента (см. Ниже), не наряжая декларацию class
или скрывая фигурные скобки и т.д.
class Foo: private Bar<Foo> {
MAGIC //expands to using Bar<Foo>::Baz; and some others
public:
void otherFunction();
//... the rest of the class
};
В идеале я бы хотел, чтобы это работало так же, как макрос Qt Q_OBJECT
, но без введения другого этапа предварительной компиляции и связанных с ним сгенерированных классов. typeid
может быть полезен во время выполнения, но моя цель - выполнить все это при сборке.
Как написать макрос MAGIC
, чтобы мне не нужно было каждый раз повторять имя класса?