Extraño uso de [] en C ++. ¿Qué está pasando? [duplicar]
Esta pregunta ya tiene una respuesta aquí:
¿Qué es una expresión lambda en C ++ 11? 8 respuestasEn primer lugar, ¡esta no es una pregunta ficticia sobre matrices o sobrecarga del operador []!
Intenté compilar Qt Creator y recibí un error en este método:
static QList<IDocumentFactory*> getNonEditorDocumentFactories()
{
return ExtensionSystem::PluginManager::getObjects<IDocumentFactory>(
[](IDocumentFactory *factory) {
return !qobject_cast<IEditorFactory *>(factory);
});
}
El error es:
mainwindow.cpp:748: error: expected primary-expression before ‘[’ token
mainwindow.cpp:748: error: expected primary-expression before ‘]’ token
mainwindow.cpp:748: error: expected primary-expression before ‘*’ token
mainwindow.cpp:748: error: ‘factory’ was not declared in this scope
Sé que estoy haciendo algo mal para compilar Qt Creator, probablemente la versión g ++, pero la pregunta no es esa.
Me gustaría entender este código porque para mí este uso de[]
es sintácticamente incorrecto ¿Puede alguien explicarme qué está pasando aquí?