0

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

我想要做的正是 boost::signals 所做的。Boost 信号可以同时接受不带参数的函数对象和带 N 个参数的函数对象

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

4

1 回答 1

1

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

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

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

于 2014-01-08T00:29:44.567 回答