c++ - std::unordered_map 的无序关联容器约束
问题描述
我已经更新到 Visual Studio 2019 的新版本(我认为是 16.6->16.9)并且正在编译的一段代码现在不是。
我在下面的 Godbolt 中复制了错误,但总而言之,我编写了一个函数,其参数被限制为接受 std::unordered_map 的。
这曾经有效,但现在不再有效,所有编译器输出为:
错误 C7602:“写入”:不满足关联的约束
这真的没有用。如果有人有调试 C++ 概念的提示,将不胜感激。
非常感谢!
带有命令行的最新 VS2019:/std:c++latest https://godbolt.org/z/WKadvn6sv
带有命令行的最新 Clang:-std=c++20 https://godbolt.org/z/Mrxoxqco9
解决方案
所以问题在于所需的子概念“可修改”。它需要此签名的交换功能,而以前有效的功能现在不需要:
{ a.swap( ContainerType() ) };
如果我把它换成这个,它现在可以工作了:
{ a.swap( a ) } -> std::convertible_to<void>;
完美的?不太确定 arg a 应该是 arg b 并且另一个模板参数被引入到我的 Modifiable 概念中。
一个大问题仍然存在 - 为什么所有这些都没有成为 C++ 的标准?
推荐阅读
- mysql - 我们如何通过mysql查询显示特定患者的记录
- laragon - 如何在端口 82 上运行 laragon 虚拟主机
- javascript - 使用 AngularJS 重写 URL
- python - 如何使用 Python 中的 Beautiful Soup 从网页中获取标题并进行迭代
- compiler-construction - 如果每种语言都是用其他语言编写的,那么哪种语言位于底部?
- java - 无法使用 Java 连接到 HBase 表
- python - 如何按列名称为元组的数据框分组?
- api - 如何在 Katalon 中使用 setBodyContent(HttpBodyContent)
- r - Adding new, combined values to existing dataframe in R
- objectbox - 在对象框实体中仅插入唯一值