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

Я попытался перегрузить функцию с помощью 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 аргументов.

Другие вопросы по тегам