Как реализовать лямбда-функцию для алгоритма сортировки, включающего члены объекта, косвенное обращение и приведение?

Я работаю над некоторым кодом, и у меня есть раздел, где я делаю функцию однократной сортировки. Для его реализации я решил, что проще всего перегрузить оператор <функция. То, что я предпочел бы сделать, это переместить реализацию сортировки ближе к реальному вызову с помощью некоторого вида boost :: bind, boost :: phoenix, lambda или другого типа реализации. К сожалению, у меня нет доступа к новым функциям C ++ 11. Ниже приведен пример кода.

// In a header
struct foo
{
   char * a;
   char * c_str() { return a; }
}

// In a header
struct bar
{
    foo * X;          

    bar(foo * _X) : X(_X) {}
    bool operator < (const bar& rhs) const
    {
        return std::string(X->c_str()) < std::string(rhs.X->c_str());
    }
};

struct bars : public std::vector<bar> { ... some stuff  };

// Some other header
bars Bs;


// A cpp file
... other stuff happens that fills the Xs vector with objects

...::Function()
{
    // Current use and it works fine
    std::sort(Bs.begin(), Bs.end())

    // Would like something that accomplishes this:
    // std::sort(Bs.begin(), Bs.end(), 
    //   std::string(lhs.X->c_str()) < std::string(rhs.X->c_str()))

    // A non-working example of what I'm trying to do
    // std::sort(Xs.begin(), Xs.end(), 
    //     std::string((bind(bar::X->c_str(), _1)) <
    //     std::string((bind(bar::X->c_str(), _2)) )
}

Я теряюсь, пытаясь выяснить, как получить доступ к указателям на члены, функции-члену, а затем приведу результат в функцию boost :: bind.

Спасибо за помощь.

Ответы на вопрос(1)

Ваш ответ на вопрос