【发布时间】:2014-08-04 22:36:59
【问题描述】:
以下代码
void CMainWindow::someMethod(const CLocationsCollection& parentItem)
{
auto f = [this, parentItem.displayName](){};
}
给我一个错误:
错误 C2143:语法错误:在 '.' 之前缺少 ']'
如果我想通过 ref 捕获 parentItem.displayName,我会为其创建一个非依赖别名标识符:
const QString& name = parentItem.displayName;
auto f = [this, &name](){}; // Or should it be [this, name] ?
但我需要按价值捕获它,我不想捕获整个parentItem,因为它很重。有什么解决办法吗?
P。 S. 捕获列表中的名称必须是标识符。 parentItem.displayName(作为一个整体)不是标识符吗?为什么编译器不能正确解析?
【问题讨论】:
标签: c++ c++11 lambda language-lawyer