具有不同签名的函数对象参数的函数

function with function object argument of different signatures

本文关键字:函数 对象 参数      更新时间:2023-10-16

我尝试使用具有不同签名的boost::function重载函数,但它不起作用。我尝试使用template<Signature> Connection *connect(boost::function<Signature> f)也失败了,因为 boost::bind 不会以这种方式隐式转换

我正在尝试做的正是boost::signals所做的。升压信号可以同时接受两者,不带参数的函数对象和带 N 个参数的函数对象

我想知道如何在一个函数中接受两种类型的函数对象。

您可以使用可变参数模板:

template<typename R, typename... Args>
Connection* connect(boost::function<R (Args...)> f);
这将接受一个接受

0 个参数的函数或一个接受 N 个参数的函数。