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 respuestas

En 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í?

Respuestas a la pregunta(2)

Su respuesta a la pregunta