7
我想了解下面的示例中,类似(但不等于)给一个在SO Help understanding boost::bind placeholder arguments早些时候发布:Boost.Bind - 了解占位符
#include <boost/bind.hpp>
#include <functional>
struct X {
int value;
};
int main() {
X a = { 1 };
X b = { 2 };
boost::bind(std::less<int>(),
boost::bind(&X::value, _1),
boost::bind(&X::value, _2))
(a, b);
}
这怎么可能,那最外层结合功能知道它有第一个参数传递给第二绑定(即期望_1
),第二个参数到第三绑定(即期望_2
)?我看到的方式是先评估内部活页夹,然后将它们变成两个一元功能对象,稍后传递给对象的活页夹。且当新创建的功能对象与两个对象被调用,a
去所述第一内结合,并b
转到第二。如果我是对的,我们会使用两次_1
。我一定是错的。我会再次重复我的问题,以清楚地说明问题:外部联编程序如何知道哪个占位符用于哪个内部联编程序?
好吧,我得到它。但是如果其中一个绑定参数不是活页夹,例如costant值?我的意思是:boost :: bind(std :: less(),boost :: bind(&X :: value,_1),10)(a);它如何知道应该为哪个参数分配生成的元组? –
2010-09-20 22:05:23
@Mar我已经更新了我的答案,请随时查看 – Anycorn 2010-09-21 00:35:19