fork(1) download
  1. #include <iostream>
  2. #include <queue>
  3. using namespace std;
  4.  
  5. struct Node {
  6. char data;
  7. Node* next;
  8. Node(char c, struct Node* nptr = nullptr)
  9. : data(c), next(nptr) {}
  10. };
  11.  
  12. struct NodeCmp {
  13. bool operator()(const Node*& lhs, const Node*& rhs) const {
  14. return lhs->data > rhs->data;
  15. }
  16. };
  17.  
  18. int main() {
  19. priority_queue<Node*, vector<Node*>, NodeCmp> PQ;
  20.  
  21. return 0;
  22. }
  23.  
Compilation error #stdin compilation error #stdout 0s 3464KB
stdin
Standard input is empty
compilation info
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)); }
                                              ^
stdout
Standard output is empty