Я пытаюсь отсортировать вектор ниже, используя библиотеку 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.