C ++ priority_queue с ошибкой лямбда-компаратора

У меня есть следующий ошибочный код, который я пытаюсь скомпилировать в VC2010, но я Я получаю сообщение об ошибке C2974 это происходит только тогда, когда я включаю лямбда-выражение, поэтому я предполагаю, что это как-то связано с этим.

typedef pair, int> adjlist_edge;
priority_queue< adjlist_edge , vector,
    [](adjlist_edge a, adjlist_edge b) -> bool {
        if(a.second > b.second){ return true; } else { return false; }
    }> adjlist_pq;

Я знаю, что форма определения шаблона верна, как

priority_queue, greater> pq;

Работает как положено. Есть идеи, что я делаю не так? Что-то явно не так с лямбдой, которая выглядит не так, что я мог бы упустить? Спасибо за чтение!

40
задан Marc Mutz - mmutz 27 April 2011 в 18:17
поделиться