Странное использование [] в C ++. Что происходит? [Дубликат]

На этот вопрос уже есть ответ здесь:

Что такое лямбда-выражение в C ++ 11? 8 ответов

Прежде всего, это не глупый вопрос о массивах или перегрузке оператора []!

Я пытался скомпилировать Qt Creator и получил ошибку в этом методе:

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

Ошибка:

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

Я знаю, что я делаю что-то не так для компиляции Qt Creator, возможно, версии g ++, но вопрос не в этом.

Я хотел бы понять этот код, потому что для меня это использование[] синтаксически неверно. Может кто-нибудь, пожалуйста, объясните мне, что здесь происходит.

Ответы на вопрос(2)

Ваш ответ на вопрос