Not sure if I have a simple typo somewhere, but I ran into problems when sorting code from tuples.
So my deque looks like this:
std::deque<boost::tuple<unsigned int, unsigned int> > messages;
And then I have my sort call:
sort(messages.begin(), messages.end(), msg_sort_criteria);
And my sort function:
bool msg_sort_criteria(boost::tuple<unsigned int, unsigned int> lhs, boost::tuple<unsigned int, unsigned int> rhs)
{
return boost::get<1>(lhs) < boost::get<1>(rhs);
}
What happens is that I get errors in stl_heap.h and stl_algo.h. For instance,
The called object type ' <bound member function type>' is not a function or function parameter.
Edit:
To clarify, all this happens inside the private members of the class.
class Messages::MessageImpl{
private:
std::deque<boost::tuple<unsigned int, unsigned int> > messages;
bool msg_sort_criteria(boost::tuple<unsigned int, unsigned int> lhs, boost::tuple<unsigned int, unsigned int> rhs)
{
return boost::get<1>(lhs) < boost::get<1>(rhs);
}
void fn()
{
sort(msg_queue_.begin(), msg_queue_.end(), msg_sort_criteria);
}
}
source
share