C++ priority_queue with lambda comparator error
I have the following erroneous code which I am trying to compile in VC2010, but I'm getting the error C2974 this only occurs when I include the lambda expression, so I'm guessing it has something to do with that. typedef pair<pair<int, int>, int> adjlist_edge; priority_queue< adjlist_edge , vector<adjlist_edge>, [](adjlist_edge a, adjlist_edge b) -> bool { if(a.second > b.second){ return true; } else { return false; } }> adjlist_pq; I know the form of the template definition is correct as priority_queue<int , vector<int>, greater<int>> pq; Works as expected. Any ideas what I'm doing wrong? Is