C++ priority_queue with lambda comparator error
First define the lambda object, then pass it to the template’s type using decltype and also pass it directly to the constructor. auto comp = []( adjist a, adjlist b ) { return a.second > b.second; }; priority_queue< adjlist_edge , vector<adjlist_edge>, decltype( comp ) > adjlist_pq( comp );