c++ - 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++20,但无效的 C++11。
decltype
在 C++20 之前,未计算的上下文(例如 )中不允许使用 Lambda 表达式。- 在 C++20 之前,闭包类型不是默认可构造的。在 C++20 中,没有捕获的闭包类型是默认可构造的。
推荐阅读
- amazon-web-services - DynamoDB 扫描所有项目以查找列表属性中的嵌套属性
- jenkins - 从詹金斯将包推送到章鱼部署时出错
- android - Firestore 收集数据未显示在回收站视图中,但可以正确访问
- python - 自定义 XGB obj 函数
- ios - 如何在 UICollectionViewCell 中使用 WKWebView?
- java - 如何使用通配符类结果的方法
- postgresql - 使用来自 XOR 的 fk 连接表
- python - drawControl 没有收到正确的 QStyleOption
- git - git 快进合并是否会更改合并提交的 SHA?
- java - 如何延长 SOAP 标头消息时间戳的过期时间