首页 > 解决方案 > 如何为 C++ 14 编译器编写语句绑定

问题描述

 warning: structured bindings only available with -std=c++17 or -std=gnu++17
     for (auto [_val, id] : ch)

以上行的等效 C++ 14 代码是什么。

标签: c++

解决方案


将结构化绑定添加到 C++ 的很大一部分原因是没有干净的方法可以在现有语言中模拟它们。

对于一些相当有限的情况,您可以std::tie在某种程度上模拟结构化绑定,但它充其量只是一个松散的模拟。为了有工作的希望,您需要从 astd::pair或中提取值std::tuple。您还必须为要提取的两个(或更多)项目单独定义变量。因此,虽然它在一些特定情况下很有用,但它几乎不可能用于手头的任务。

这让我们回到了这种代码,这就是他们向语言添加结构化绑定的原因。std::tie足以说明这个想法在总体上是多么有用,在某些情况下它甚至可能本身是有用的——但至少在我看来,它的大部分真正价值在于展示一个更通用的、基于语言的机制是多么有用将会。


推荐阅读