是由BOOST ::返回的函子,仅使用绑定的参数绑定,等效于不采用参数的函数

Is a functor returned by boost::bind with only bound arguments equivalent to a function that takes no arguments?

本文关键字:参数 绑定 于不采 函数 返回 BOOST 是由      更新时间:2023-10-16

假设API请求,函数f必须具有签名void function()。以下代码样本满足此要求吗?

 void func(int i)
 {
       do_something(i);
 }
 int main(int argc, char* argv[])
 {
    int i = 3;
    auto f = boost::bind(func, i);
 }

换句话说:在这种情况下,f是否满足给定API的要求?

编辑:我的问题对"函数"一词有些模糊。为了澄清:f应像功能一样,因此一个简单的函数或功能对象。当我在bost.asio中与Strands一起工作时,我为什么问这个问题的具体案例。在这里,文档说明strand::post的可能处理程序:

要调用的函数对象。执行人将根据需要制作处理程序对象的副本。函数对象的功能签名必须为: void function();

so:来自上面示例的f是一个函数对象,具有strand::post的正确签名?

是上面示例的f,一个函数对象,具有正确的strand :: post

的正确签名

是的,std::bind返回的函子是io_service::strand::post的有效函数。std::bind出于此目的而存在,它用值绑定了参数并减少其计数以满足API的要求。

否,因为 std::bind返回一个未指定的对象。必须具有cetain成员和方法,但这就是关于此。如果确切的返回类型不多,则可能符合要求,但严格来说,这不是一个功能。

编辑:

在问题中澄清后,答案严格,因为此未指定的对象必须按照strand::post的方式行事。