метапрограммирования (c++11, если что):
в классе нужно создать виртуальную функцию и статическую функцию, из статической функции звать виртуальную (не забыв объект конечно):
struct Foo {
static Foo* impl;
virtual barImpl(int a) = 0;
static void bar(int a) {impl->barImpl(a);}
};
Хочется это дело автогенерировать на этапе компиляции, псевдокод:
struct Foo {
static Foo* impl;
METAMAGIC(void bar(int a));
};
Есть идеи как такое (или похожее) сделать?
*impl должен уходить в bar через аргумент.
Можно просто макросом же, не?
Если без макросов, то можно публично наследоваться от метафункции, которой передавать тип Foo (для crtp), и сигнатуру функции bar. И вроде можно сгенерировано в этой метафункции нужный код. Только не знаю как своё имя для функции bar сделать
Обсуждают сегодня