首页 > 解决方案 > C++:未计算上下文中的 lambda 表达式

问题描述

我正在按照这个答案定义一个带有 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;
}

标签: c++c++11stl

解决方案


您的代码是有效的 C++20,但无效的 C++11。

  • decltype在 C++20 之前,未计算的上下文(例如 )中不允许使用 Lambda 表达式。
  • 在 C++20 之前,闭包类型不是默认可构造的。在 C++20 中,没有捕获的闭包类型是默认可构造的。

推荐阅读