функция с аргументом объекта функции разных сигнатур

Я пытался перегрузить функцию с помощью boost :: function разными сигнатурами, это не сработало.
Я пытался с помощью template<Signature> Connection *connect(boost::function<Signature> f) что также не удалось, так как Boost :: Bind не конвертируется таким образом

То, что я пытаюсь сделать, это именно то, что делает Boost :: сигналы. Повышающие сигналы могут принимать как функциональный объект без аргументов, так и функциональные объекты с N аргументами

Я хочу знать, как я могу принять оба типа функциональных объектов в одной функции.

0

Решение

Вы можете использовать различные шаблоны:

template<typename R, typename... Args>
Connection* connect(boost::function<R (Args...)> f);

Это будет принимать как функцию, которая принимает 0 аргументов, так и функцию, которая принимает N аргументов.

1

Другие решения

Других решений пока нет …