Uso estranho de [] em C ++. O que está acontecendo? [duplicado]
Esta pergunta já tem uma resposta aqui:
O que é uma expressão lambda no C ++ 11? 8 respostasAntes de tudo, essa não é uma pergunta fictícia sobre matrizes ou sobrecarga do operador []!
Eu estava tentando compilar o Qt Creator e recebi um erro neste método:
static QList<IDocumentFactory*> getNonEditorDocumentFactories()
{
return ExtensionSystem::PluginManager::getObjects<IDocumentFactory>(
[](IDocumentFactory *factory) {
return !qobject_cast<IEditorFactory *>(factory);
});
}
O erro é:
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
Eu sei que estou fazendo algo errado para compilar o Qt Creator, provavelmente a versão g ++, mas a questão não é essa.
Eu gostaria de entender esse código porque para mim esse uso de[]
está sintaticamente incorreto. Alguém pode me explicar o que está acontecendo aqui.