Update item31.md (#192)

This commit is contained in:
Carl Gerlach 2024-07-15 09:36:21 +08:00 committed by GitHub
parent 199be3f507
commit 8bc0371709
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -94,7 +94,7 @@ filters.emplace_back(
但通过显式的捕获,能更容易看到*lambda*的可行性依赖于变量`divisor`的生命周期。另外写下“divisor”这个名字能够提醒我们要注意确保`divisor`的生命周期至少跟*lambda*闭包一样长。比起“`[&]`”传达的意思,显式捕获能让人更容易想起“确保没有悬空变量”。
如果你知道一个闭包将会被马上使用例如被传入到一个STL算法中并且不会被拷贝那么在它的*lambda*被创建的环境中,将不会有持有的引用比局部变量和形参活得长的风险。在这种情况下,你可能会争论说,没有悬空引用的危险,就不需要避免使用默认的引用捕获模式。例如,我们的过滤*lambda*只会用做C++11中`std::all_of`的一个实参,返回满足条件的所有元素:
如果你知道一个闭包将会被马上使用例如被传入到一个STL算法中并且不会被拷贝那么在它的*lambda*被创建的环境中,将不会有闭包的引用比父函数的局部变量和形参活得长的风险。在这种情况下,你可能会争论说,没有悬空引用的危险,就不需要避免使用默认的引用捕获模式。例如,我们的过滤*lambda*只会用做C++11中`std::all_of`的一个实参,返回满足条件的所有元素:
```c++
template<typename C>