Seltsame Verwendung von [] in C ++. Was ist los? [Duplikat

Diese Frage hat hier bereits eine Antwort:

Was ist ein Lambda-Ausdruck in C ++ 11? 8 answers

Zuerst ist dies keine Scheinfrage über Arrays oder Operator [] -Überladung!

Ich habe versucht, Qt Creator zu kompilieren, und in dieser Methode ist ein Fehler aufgetreten:

static QList<IDocumentFactory*> getNonEditorDocumentFactories()
{
    return ExtensionSystem::PluginManager::getObjects<IDocumentFactory>(
        [](IDocumentFactory *factory) {
            return !qobject_cast<IEditorFactory *>(factory);
        });
}

Der Fehler ist:

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

Ich weiß, dass ich etwas falsch gemacht habe, um Qt Creator zu kompilieren, wahrscheinlich die g ++ Version, aber die Frage ist nicht das.

Ich möchte diesen Code verstehen, weil für mich diese Verwendung von[] ist syntaktisch falsch. Kann mir bitte jemand erklären, was hier passiert.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage