C++ priority_queue avec lambda comparateur d'erreur

J'ai le texte suivant code erroné, que j'essaie de compiler dans VC2010, mais j'obtiens le message d'erreur C2974 cela se produit uniquement lorsque je inclure l'expression lambda, donc je suppose qu'il a quelque chose à voir avec cela.

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;

Je sais que la forme de la définition de modèle est correct comme

priority_queue<int , vector<int>, greater<int>> pq;

Fonctionne comme prévu. Les idées de ce que je fais mal? Est-il quelque chose de manifestement mal avec le lambda qui regarde le mal que j'ai peut-être oublié? Merci pour la lecture!

InformationsquelleAutor ameer | 2011-04-27