2016-05-03 12 views
5

Ich habe C++ 14 in Code aktiviert (a QT5 Projekt) ähnlich den folgenden:Compiler stürzen auf generisches Lambda

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(); 

Nach dem Empfang:

internal compiler error: Segmentation fault 

Debuggen fand ich m_p nicht tat ändere nach dem Anruf zu func, wie ich erwartet hatte. Funktioniert generisches Lambda() wirklich so? Wie gehe ich vor, um m_p in Code wie oben zu ändern?

+0

Ich habe Probleme beim Parsen des Titels und des Problems mit der Sprachfunktion. Hat "Generic Template" einen anderen Namen? Oder ist das ein Problem mit Auto-typisierten Variablen, Rückgabetyp Abzug oder Lambdas? Siehe auch [C++ Standards Support in GCC] (http://gcc.gnu.org/projects/cxx-status.html). – jww

+0

Ist es jetzt besser? – KcFnMi

+0

Manchmal lösen Kompilierungsfehler Compilerfehler aus. Möglicherweise generieren andere Teile Ihres Codes (z. B. doSomething()) einen Kompilierungsfehler, der wiederum einen Fehler im Compiler verursacht. Probieren Sie andere Compiler aus oder finden Sie heraus, was in Ihrem Code falsch ist (ohne die Hilfe des Compilers). Zunächst entfernen Sie die Caputure '&' im Lambda, da dies nicht notwendig ist. – alfC

Antwort

6

Segmentierung Fehler im Compiler ist sehr schlecht, aber haben Sie versucht mit auto& pp? Es sieht so aus, als würde m_p als Wert übergeben, nicht als Referenz.

7

Einen Fehlerbericht in gcc's Bugzilla einreichen. Ob Ihr Code C++ gültig ist oder nicht, der Compiler sollte nicht mit einem Segmentierungsfehler in die Luft gehen.

+0

Darf ich Sie bitten, etwas ausführlicher zu sein? – KcFnMi

+5

Sie sind völlig frei, mich zu bitten, ausführlicher zu sein. Aber es gibt nichts anderes zu sagen: Glückwunsch, Sie haben einen Fehler in gcc gefunden. Für Ihren Preis erhalten Sie einen komplett kostenlosen Fehlerbericht in gcc's Bugzilla! –

+0

Was lässt Sie glauben, dass das OP GCC verwendet? – emlai

Verwandte Themen