[C++]boostのbindについて教えてください。
boostのbindについて下記のサイトを参考にしたのですが、よくわからない箇所があります。
1. http://gimite.net/behind/boostsample.htm
2. http://www.kmonos.net/alang/boost/classes/bind.html
1.のサイトに下記のサンプルがあります(一部抜粋)。
struct Boo{
void f(int i, int j)
{ std::cout<<"Sum is "<<(i+j)<<"."<<std::endl; }
};
void main(){
Boo boo;
boost::function2<void, int, int> func;
func= boost::bind(&Boo::f, &boo, _1, _2); // boo.fを代入
func(13, 7);
}
とし、func(13,7)の出力結果を20としています。
こちらについては納得できました。
しかし、2のサイトのサンプルがよく分かりません。
こちらでは、boost()を関数の引数にしています。
bool is_ordered( int a, int b, int c )
{
return a<=b && b<=c;
}
int main()
{
// 7以上12以下の最初の要素を探す。
// is_orderedに定数をbindして(くくりつけて)、
// 「is_ordered(7,第一引数,12)」と等価な
// 関数オブジェクトを作っているわけです。
int arr[] = {1,2,3,4,5,6,7,8,9,10};
const int len = sizeof(arr) / sizeof(arr[0]);
int* f = find_if( arr, arr+len,
boost::bind(is_ordered, 7, _1, 12) );
cout << *f << endl;
return 0;
}
bind()が関数の引数として扱われている場合、_1にはどんな値が入るのでしょうか?(find_if()の第一引数「arr」を_1に代入?)
どなたか教えてください。
よろしくお願いいたします。
お礼
ありがとうございました。