Хранение лямбда-выражений C ++ с переменными аргументами - PullRequest
2 голосов
/ 09 мая 2020

Я хотел бы создать конструкцию со следующей механикой:

void some_func1();
void somt_func2(int, float = 3.14f);
enum { SIGNAL0, SIGNAL1 };

// connect
int con0 = connect(SIGNAL0, some_func1);
int con1 = connect(SIGNAL1, some_func2);
int con2 = connect(SIGNAL0, []{ /*some code*/ });
int con3 = connect(SIGNAL1, [](int, float){ /*some code*/ });

// invoke
invoke(SIGNAL0);
invoke(SIGNAL1, 123, 3.14f);

// would even be nice to be able to do this:
invoke(SIGNAL1, 123);

//the second float parameter gets default argument
// (probably not possible because of lambda can't have default args?)

Как функции будут подключаться (int, ...?), Вызывать (int, ...?) И сохранять тип обратного вызова как выглядит?

...