Странное использование [] в 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 ++, но вопрос не в этом.
Я хотел бы понять этот код, потому что для меня это использование[]
синтаксически неверно. Может кто-нибудь, пожалуйста, объясните мне, что здесь происходит.