【发布时间】:2018-02-27 13:37:38
【问题描述】:
假设一个 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 应该是类似函数的,所以是一个简单的函数或函数对象。当我在 Boost.ASIO 中使用 strands 时,我提出了这个问题的具体案例。 Here,文档中提到了strand::post 的可能处理程序:
要调用的函数对象。执行器将根据需要制作处理程序对象的副本。函数对象的函数签名必须是:
void function();
那么:上例中的f 是具有strand::post 正确签名的函数对象吗?
【问题讨论】:
-
在 c++11 中你可以跳过 boost::bind 并写
auto f = [i] {func (i);}; -
API 是否需要函数或类似函数的东西?比如
struct dummy { void operator() {} };wotk?
标签: c++ boost boost-bind