ho C++ 14 abilitati nel codice (un progetto QT5) simile al seguente:compilatore si blocca su lambda generico
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();
Dopo aver ricevuto:
internal compiler error: Segmentation fault
Debug ho trovato m_p
no cambiare dopo la chiamata a func
, come mi aspettavo. Il lambda generico (auto
) funziona davvero così? Come vado a cambiare m_p
in codice come sopra?
Ho problemi ad analizzare il titolo e il problema con la funzione lingua. Il "Modello generico" ha un altro nome? O si tratta di un problema con variabili Auto-tipizzate, detrazione di tipo Return o Lambdas? Vedi anche [Supporto standard C++ in GCC] (http://gcc.gnu.org/projects/cxx-status.html). – jww
È meglio ora? – KcFnMi
Talvolta gli errori di compilazione generano errori di compilazione. Forse altre parti del codice (ad es. DoSomething()) generano un errore di compilazione e questo a sua volta espone un bug nel compilatore. Prova altri compilatori o scopri cosa c'è di sbagliato nel tuo codice (senza l'aiuto del compilatore). Per cominciare, rimuovi la caputura '&' nella lambda in quanto non è necessario. – alfC