我在这里发现 lambdas 是按值捕获的。这意味着如果一个算法在内部使用第二个算法,它按值接受 lambda,则不会保留 lambda 的任何可变状态。我将在这里重新发布我的链接问题示例:
remove_if(begin(values), end(values), [i = 0U, it = cbegin(intervals), end = cend(intervals)](const auto&) mutable {
return it != end && ++i > it->first && (i <= it->second || (++it, true));
})
因此,在撰写本文时,我最初的问题已经定义了lambdaremove_if
的实现行为。mutable
是否有实现定义的其他功能的列表?