【发布时间】:2010-09-20 18:34:00
【问题描述】:
我试图理解下面的例子,它类似于(但不等于)早先在 SO Help understanding boost::bind placeholder arguments 上发布的例子:
#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 )?我看到的方式是首先评估内部绑定器,因此它们成为两个一元功能对象,稍后传递给 less<int> 对象的绑定器。当新创建的函数对象被两个对象调用时,a 进入第一个内部绑定,b 进入第二个。如果我是对的,我们会使用两次_1。我一定是错的。我将再次重复我的问题以明确我的问题:外部绑定器如何知道在哪个内部绑定器中使用了哪个占位符?
【问题讨论】:
标签: c++ boost boost-bind