编译器在泛型lambda上崩溃

KcF*_*nMi 5 c++ qt c++11 qt5 c++14

我在代码(Qt5项目)中启用了C++ 14,类似于以下内容:

auto func = [&](auto p, auto pp) {
    if(!p)
        return;
    pp = p;
    p->init();
    this->member_function(pp->thing()); // replaces member_function(pp->thing());
};
MyClass *p1;
...
func(p1, m_p);
m_p->doSomething();
Run Code Online (Sandbox Code Playgroud)

接收后:

internal compiler error: Segmentation fault
Run Code Online (Sandbox Code Playgroud)

正如我所期待的那样,m_p在调用之后我发现调试没有改变func.泛型lambda(auto)真的有效吗?如何更改m_p上面的代码?

Sam*_*hik 7

在gcc的bugzilla中提交错误报告.无论您的代码是否是有效的C++,编译器都不应该出现分段错误.

  • 你完全可以自由地要求我更详细.但是没有别的可以说了:恭喜你,你在gcc中发现了一个错误.对于您的奖品,您可以在gcc的bugzilla中获得完全免费的错误报告! (5认同)

Kyl*_*e A 6

编译器中的分段错误非常糟糕,但您尝试过使用auto& pp吗?看起来像是m_p通过值传递,而不是参考.