C++:lambda-expression在未评估的上下文中

Asp*_*Mat 3 c++ stl c++11

我按照这个答案来定义一个带有lambda函数的priority_queue.但是,我正在运行:error:lambda-expression在未评估的上下文中

#include <bits/stdc++.h>

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

T.C*_*.C. 8

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

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