I want to have a priority queue with custom ordering, but lazy as I am, I don't want to define a comparator class implementing operator().
I really would like something like this to compile:
std::priority_queue<int, std::vector<int>,
boost::bind(some_function, _1, _2, obj1, obj2)> queue;
where some_function is a bool returning function taking four arguments, the first and second being ints of the queue, and the two last ones some objects needed for calculating the ordering (const references).
(error: ‘boost::bind’ cannot appear in a constant-expression)
But this doesn't compile. Even a more simple
std::priority_queue<int, std::vector<int>, &compare> queue;
won't compile, with compare being a binary function returning bool.
(error: type/value mismatch at argument 3 in template parameter list for ‘template class std::priority_queue’; expected a type, got ‘compare’)
Any suggestions?
boost::bindhere - before the > on the queue template params. Is that a typo in posted code or in what you tried to compile?