函数与不同签名的函数对象参数

时间:2014-01-08 00:05:27

标签: c++ boost boost-bind boost-function boost-signals

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

我正在尝试做的正是boost :: signals的作用。 Boost信号既可以接受没有参数的函数对象,也可以接受带有N个参数的函数对象

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

1 个答案:

答案 0 :(得分:1)

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

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

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