Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ lambda的默认捕获是什么?_C++_C++11_Lambda - Fatal编程技术网

C++ lambda的默认捕获是什么?

C++ lambda的默认捕获是什么?,c++,c++11,lambda,C++,C++11,Lambda,我在读一篇文章,上面说 当前对象(*this)可以隐式捕获,如果 存在捕获默认值。如果隐式捕获,它总是 通过引用捕获,即使捕获默认值为= 我很难理解上面的陈述-捕获默认值是什么?这是否意味着如果我使用=作为捕获(这意味着复制当前范围内的变量),它也会隐式地将此添加到捕获中,从而允许我使用此 捕获默认值是什么 =或& 逗号分隔的捕获列表(包含在[]中的内容)可以选择以捕获默认值之一开头:=或&(可能是列表中的唯一元素)。如果存在捕获默认值,并且您尝试在lambda中使用必须捕获的变量(自动变量或此

我在读一篇文章,上面说

当前对象(*this)可以隐式捕获,如果 存在捕获默认值。如果隐式捕获,它总是 通过引用捕获,即使捕获默认值为=

我很难理解上面的陈述-捕获默认值是什么?这是否意味着如果我使用
=
作为捕获(这意味着复制当前范围内的变量),它也会隐式地将
添加到捕获中,从而允许我使用

捕获默认值是什么

=
&

逗号分隔的捕获列表(包含在
[]
中的内容)可以选择以捕获默认值之一开头:
=
&
(可能是列表中的唯一元素)。如果存在捕获默认值,并且您尝试在lambda中使用必须捕获的变量(自动变量或
),则捕获默认值将通过值(
=
)或引用(
&
)捕获该变量

这是否意味着如果我使用
=
作为捕获,它会隐式地将
添加到捕获中

是的,但前提是您实际使用它(直接或通过访问类成员)

捕获默认值不会捕获任何变量,除非您在lambda中实际使用它们

捕获默认值是什么

=
&

逗号分隔的捕获列表(包含在
[]
中的内容)可以选择以捕获默认值之一开头:
=
&
(可能是列表中的唯一元素)。如果存在捕获默认值,并且您尝试在lambda中使用必须捕获的变量(自动变量或
),则捕获默认值将通过值(
=
)或引用(
&
)捕获该变量

这是否意味着如果我使用
=
作为捕获,它会隐式地将
添加到捕获中

是的,但前提是您实际使用它(直接或通过访问类成员)


捕获默认值不会捕获任何变量,除非您在lambda中实际使用它们。

为什么称为默认值?如果我们不指定任何内容,它是否会隐式添加到lambda中?@MistyD查看编辑。您也可以在“解释-捕获”下阅读解释。谢谢您的澄清。您能告诉我您所说的自动变量是什么意思吗?@MistyD One在函数范围(而不是类或命名空间范围)声明。为什么它被称为默认值?如果我们不指定任何内容,它是否会隐式添加到lambda中?@MistyD查看编辑。您也可以在“解释-捕获”下阅读解释。谢谢您的澄清。你能告诉我你所说的自动变量是什么意思吗?@MistyD-One在函数范围(而不是类或命名空间范围)声明。