#include <iostream>
#include <queue>
using namespace std;
struct Node {
char data;
Node* next;
Node(char c, struct Node* nptr = nullptr)
: data(c), next(nptr) {}
};
struct NodeCmp {
bool operator()(const Node*& lhs, const Node*& rhs) const {
return lhs->data > rhs->data;
}
};
int main() {
priority_queue<Node*, vector<Node*>, NodeCmp> PQ;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cXVldWU+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgTm9kZSB7CiAgICBjaGFyICBkYXRhOwogICAgTm9kZSogbmV4dDsKICAgIE5vZGUoY2hhciBjLCBzdHJ1Y3QgTm9kZSogbnB0ciA9IG51bGxwdHIpCiAgICAgICAgOiBkYXRhKGMpLCBuZXh0KG5wdHIpIHt9Cn07CgpzdHJ1Y3QgTm9kZUNtcCB7CiAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgTm9kZSomIGxocywgY29uc3QgTm9kZSomIHJocykgY29uc3QgewogICAgICAgIHJldHVybiBsaHMtPmRhdGEgPiByaHMtPmRhdGE7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKICAgIHByaW9yaXR5X3F1ZXVlPE5vZGUqLCB2ZWN0b3I8Tm9kZSo+LCBOb2RlQ21wPiBQUTsKCiAgICByZXR1cm4gMDsKfQo=
In file included from /usr/include/c++/5/bits/stl_algobase.h:71:0,
from /usr/include/c++/5/bits/char_traits.h:39,
from /usr/include/c++/5/ios:40,
from /usr/include/c++/5/ostream:38,
from /usr/include/c++/5/iostream:39,
from prog.cpp:1:
/usr/include/c++/5/bits/predefined_ops.h: In instantiation of 'constexpr bool __gnu_cxx::__ops::_Iter_comp_iter<_Compare>::operator()(_Iterator1, _Iterator2) [with _Iterator1 = __gnu_cxx::__normal_iterator<Node**, std::vector<Node*> >; _Iterator2 = __gnu_cxx::__normal_iterator<Node**, std::vector<Node*> >; _Compare = NodeCmp]':
/usr/include/c++/5/bits/stl_heap.h:215:14: required from 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Node**, std::vector<Node*> >; _Distance = int; _Tp = Node*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<NodeCmp>]'
/usr/include/c++/5/bits/stl_heap.h:333:22: required from 'void std::__make_heap(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Node**, std::vector<Node*> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<NodeCmp>]'
/usr/include/c++/5/bits/stl_heap.h:384:23: required from 'void std::make_heap(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Node**, std::vector<Node*> >; _Compare = NodeCmp]'
/usr/include/c++/5/bits/stl_queue.h:414:23: required from 'std::priority_queue<_Tp, _Sequence, _Compare>::priority_queue(const _Compare&, _Sequence&&) [with _Tp = Node*; _Sequence = std::vector<Node*>; _Compare = NodeCmp]'
prog.cpp:19:51: required from here
/usr/include/c++/5/bits/predefined_ops.h:123:46: error: no match for call to '(NodeCmp) (Node*&, Node*&)'
{ return bool(_M_comp(*__it1, *__it2)); }
^
prog.cpp:13:10: note: candidate: bool NodeCmp::operator()(const Node*&, const Node*&) const <near match>
bool operator()(const Node*& lhs, const Node*& rhs) const {
^
prog.cpp:13:10: note: conversion of argument 2 would be ill-formed:
In file included from /usr/include/c++/5/bits/stl_algobase.h:71:0,
from /usr/include/c++/5/bits/char_traits.h:39,
from /usr/include/c++/5/ios:40,
from /usr/include/c++/5/ostream:38,
from /usr/include/c++/5/iostream:39,
from prog.cpp:1:
/usr/include/c++/5/bits/predefined_ops.h:123:46: error: invalid initialization of non-const reference of type 'const Node*&' from an rvalue of type 'const Node*'
{ return bool(_M_comp(*__it1, *__it2)); }
^