У меня есть следующий ошибочный код, который я пытаюсь скомпилировать в VC2010, но я получаю сообщение об ошибке C2974, это происходит только тогда, когда я включают выражение лямбда, поэтому я предполагаю, что это как-то связано с этим.
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;
Я знаю, что форма определения шаблона верна как
priority_queue<int , vector<int>, greater<int>> pq;
Работает так, как ожидалось. Любые идеи, что я делаю неправильно? Что-то явно не так с лямбдой, которая выглядит неправильно, что я мог бы не заметить? Спасибо за чтение!