c++ - 如何为 C++ 14 编译器编写语句绑定
问题描述
warning: structured bindings only available with -std=c++17 or -std=gnu++17
for (auto [_val, id] : ch)
以上行的等效 C++ 14 代码是什么。
解决方案
将结构化绑定添加到 C++ 的很大一部分原因是没有干净的方法可以在现有语言中模拟它们。
对于一些相当有限的情况,您可以std::tie
在某种程度上模拟结构化绑定,但它充其量只是一个松散的模拟。为了有工作的希望,您需要从 astd::pair
或中提取值std::tuple
。您还必须为要提取的两个(或更多)项目单独定义变量。因此,虽然它在一些特定情况下很有用,但它几乎不可能用于手头的任务。
这让我们回到了这种代码,这就是他们向语言添加结构化绑定的原因。std::tie
足以说明这个想法在总体上是多么有用,在某些情况下它甚至可能本身是有用的——但至少在我看来,它的大部分真正价值在于展示一个更通用的、基于语言的机制是多么有用将会。
推荐阅读
- android - 解析 JSON 数组 - 如何?
- javascript - 如何在此代码上添加此函数“setInterval”以使我的页面无需刷新即可获取表单或数据
- matlab - 如何在 Linux 服务器上运行 matlab m 文件脚本
- python - 尝试将简单产品添加到购物车时出现 CSRF 错误
- javascript - nodejs mysql中的动态下拉列表
- php - 如何在 foreach 循环的每个迭代中更改 post 值
- javascript - text() 不返回组件内的文本
- django - 如果他/她尝试在不同的浏览器上登录,我们是否可以避免为单个用户生成多个令牌?
- assembly - 所有英特尔 CPU 芯片组设备接口上的英特尔 ME 影子完全访问操作系统
- c - 输入所有数据后立即出现错误。