Я пытался перегрузить функцию с помощью boost :: function разными сигнатурами, это не сработало.
Я пытался с помощью template<Signature> Connection *connect(boost::function<Signature> f)
что также не удалось, так как Boost :: Bind не конвертируется таким образом
То, что я пытаюсь сделать, это именно то, что делает Boost :: сигналы. Повышающие сигналы могут принимать как функциональный объект без аргументов, так и функциональные объекты с N аргументами
Я хочу знать, как я могу принять оба типа функциональных объектов в одной функции.
Вы можете использовать различные шаблоны:
template<typename R, typename... Args>
Connection* connect(boost::function<R (Args...)> f);
Это будет принимать как функцию, которая принимает 0 аргументов, так и функцию, которая принимает N аргументов.
Других решений пока нет …