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 respostas

Antes 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.

questionAnswers(2)

yourAnswerToTheQuestion