【发布时间】:2015-07-24 22:13:03
【问题描述】:
我正在尝试关注 this example 以使用带有 remove_if 的 lambda。这是我的尝试:
int flagId = _ChildToRemove->getId();
auto new_end = std::remove_if(m_FinalFlagsVec.begin(), m_FinalFlagsVec.end(),
[](Flag& device) {
return device.getId() == flagId;
});
m_FinalFlagsVec.erase(new_end, m_FinalFlagsVec.end());
但是编译失败:
error C3493: 'flagId' cannot be implicitly captured because no default capture mode has been specified
如何在 lambda 表达式中包含外部参数 flagId?
【问题讨论】:
-
默认捕获模式为
[=](按值)和[&](按引用)。[ ]表示没有捕获。