C ++:未评估上下文中的lambda表达式

时间:2018-10-10 06:53:46

标签: c++ c++11 stl

我正在按照this的答案来定义带有lambda函数的priority_queue。但是,我要执行以下操作:错误:未评估上下文中的lambda表达式

#include <bits/stdc++.h>

int main()
{
    std::priority_queue<
        int,
        std::vector<int>,
        decltype( [](int a, int b)->bool{
                   return a>b;
        })>
         q;
}

1 个答案:

答案 0 :(得分:7)

您的代码按编写的方式是有效的C ++ 20,但无效的C ++ 11。

  • 在C ++ 20之前的未经评估的上下文(例如decltype)中不允许使用Lambda表达式。
  • 在C ++ 20之前,默认无法构造关闭类型。在C ++ 20中,默认情况下可构造没有捕获的闭包类型。