0

我在 GCC 中遇到了这段代码的分段错误,但使用 MSVC 编译得很好

QMap<int, QPair<QString, QString>> someData; 
// inserting some value
for (auto id : someData.keys()) {
   auto [foo, bar] = someData[id];
   //do stuff with foo, bar.
}

结构化绑定会发出段错误。

日志:

internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.

解决方案

将结构化绑定声明为引用。

auto& [foo, bar] = someData[id];

看起来 GCC 无法推断出限定符,因为 operator[] 返回一个 T&。

4

0 回答 0