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