为啥结构化绑定在 GCC 上失败?

Posted

技术标签:

【中文标题】为啥结构化绑定在 GCC 上失败?【英文标题】:Why does structured binding fail on GCC?为什么结构化绑定在 GCC 上失败? 【发布时间】:2017-11-02 11:38:09 【问题描述】:

以下结构化绑定代码在 clang 上运行良好。 Live demo

但是,它在 GCC 编译器上失败了。 Live demo

#include <iostream>

struct st 
  bool b = true;
;

template <class T>
bool func() noexcept 
  auto [a] = T;
  return a;


int main() 
  const bool b1 = func<st>();

为什么结构化绑定在 GCC 上会失败?

【问题讨论】:

什么是预期结果,什么是实际结果? 因为 GCC 在其实现中存在需要修复的错误。这就是你问的问题的答案。这不是一个过于有用的问题。但是,您可以改写它以使其更有用。 这个问题...与 gcc 错误密切相关? 编译器说“失败”? 【参考方案1】:

这是在 GCC 7.2 中引入的known bug in GCC。您的代码符合标准。

【讨论】:

以上是关于为啥结构化绑定在 GCC 上失败?的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个结构文字在 VS2013 中通过地址而不是 gcc/clang 时会损坏?

为啥通过直接赋值复制结构会失败?

为啥 setattr 在绑定方法上失败

为啥我尝试在结构内的向量内添加到结构内的向量失败?

为啥结构化流式处理因“java.lang.IncompatibleClassChangeError:Implementing class”而失败?

NSKeyedArchiver 因 CLLocationCoordinate2D 结构而失败。为啥?