Третий аргумент шаблона для std::priority_queue
по умолчанию равен std::less
. Итак, вызываемый вами конструктор ожидает объект std::less
. Вам нужно изменить третий аргумент шаблона:
std::priority_queue<int, std::vector<T>, std::greater<int>> q (std::greater<int>{});
Передача std::greater<int>{}
также не нужна, поскольку есть конструктор по умолчанию, который сделает это за вас.
std::priority_queue<int, std::vector<T>, std::greater<int>> q;