boost::phoenixライブラリを使用して以下のベクトルを並べ替えようとしています。クラスFooには、メンバー関数'int getvalue()'があります。目的は、「getvalue()」によって返される値を使用してベクトルをソートすることです。しかし、何かが欠けています。'::secondはクラスまたは名前空間ではありません'としてコンパイラエラーが発生します
std::vector<std::pair<int, Foo> > fooVec;
boost::phoenix::sort ( boost::phoenix::bind( &std::pair<int, Foo>::second::getvalue(), boost::phoenix::arg_names::arg1) (*fooVec.begin() ), std::less<int>() );
誰かがこれを説明できますか?これを機能させるにはどのような変更が必要ですか?
ありがとう。
PS:関数object / lambdaまたは同様のものを使用できたはずですが、boost::phoenixを試してみたかったのです。