我有两个功能: 1. A&数据源(); 2. void DataConsumer(A *);
我想要实现的目标: 使用一个语句将它们组合成一个仿函数 。
我试过了:
1。 boost :: function<空隙()> func(boost :: bind(DataConsumer,& boost :: bind(DataSource)));
当然它不起作用,编译器说它无法将'boost :: _ bi :: bind_t'转换为'A *'
2. boost :: function<空隙()> func(boost :: bind(DataConsumer,boost :: addressof(boost :: bind(DataSource))));
编译器说不能将参数1从'boost :: _ bi :: bind_t'转换为'A&'
问题:如何使用嵌套boost :: bind的返回值?或者如果你想使用boost :: lambda :: bind。
答案 0 :(得分:1)
boost::function< void()> func(
boost::bind( DataConsumer,
boost::bind( boost::addressof< A >, boost::bind< A& >( DataSource ) )
) );
理论应该是:因为我们稍后调用DataSource,所以我们需要一个稍后使用返回值的仿函数。