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