是由BOOST ::返回的函子,仅使用绑定的参数绑定,等效于不采用参数的函数
Is a functor returned by boost::bind with only bound arguments equivalent to a function that takes no arguments?
假设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
的方式行事。
相关文章:
- 为什么 std::绑定错误参数可以成功?
- C++初始化 std::function 时如何将占位符绑定到引用/引用参数?
- 绑定到可变参数成员函数
- 如何在 C# 中将带有参数的函数绑定到包中
- 如何将参数绑定到构造函数?
- C++ 如何将参数绑定到具有相同返回类型的函数,并将它们全部存储在一个容器中
- 函数参数绑定通过参考与传递指针传递数组的规则
- C 如何将参数绑定到接受函数的函数
- 模板参数绑定
- 是由BOOST ::返回的函子,仅使用绑定的参数绑定,等效于不采用参数的函数
- 当常量引用参数绑定到右值时,右值是否保持其"status"?
- 用emscripten中的参考参数绑定函数
- 如何将Boost ::函数对象与所有参数绑定
- std ::将参数绑定到没有对象的情况下的成员函数
- 隐马尔可夫模型-在C++中实现参数绑定
- 函数参数绑定的完美转发和歧义
- 为容器中的每个对象调用具有一个参数(绑定)的成员函数
- std::bind():将lambda与右值引用作为参数绑定
- 与派生函数参数绑定
- 与模板模板类一起使用的自定义模板参数绑定器