我在 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&。