Я хочу иметь приоритетную очередь с пользовательским упорядочением, но, как я ленив, я не хочу определять оператор реализации класса компаратора ().
Мне бы очень хотелось, чтобы что-то подобное скомпилировалось:
std::priority_queue<int, std::vector<int>,
boost::bind(some_function, _1, _2, obj1, obj2)> queue;
где some_function - это функция, возвращающая bool, принимающая четыре аргумента, первый и второй - целые числа в очереди, а два последних - объекты, необходимые для расчета порядка (ссылки на константы).
(ошибка: «boost :: bind» не может появляться в константном выражении)
Но это не компилируется. Еще более простой
std::priority_queue<int, std::vector<int>, &compare> queue;
не будет компилироваться, поскольку сравнение - это двоичная функция, возвращающая bool.
(ошибка: несоответствие типа / значения в аргументе 3 в списке параметров шаблона для «шаблона класса std :: priority_queue»; ожидал тип, получил «сравнить»)
Есть предложения?