From 8bc037170917302a20011e48bd49367afe713a42 Mon Sep 17 00:00:00 2001 From: Carl Gerlach Date: Mon, 15 Jul 2024 09:36:21 +0800 Subject: [PATCH] Update item31.md (#192) --- src/6.LambdaExpressions/item31.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/6.LambdaExpressions/item31.md b/src/6.LambdaExpressions/item31.md index d534fe7d..95ff13d4 100644 --- a/src/6.LambdaExpressions/item31.md +++ b/src/6.LambdaExpressions/item31.md @@ -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