C++ lambda的默认捕获是什么?
我在读一篇文章,上面说 当前对象(*this)可以隐式捕获,如果 存在捕获默认值。如果隐式捕获,它总是 通过引用捕获,即使捕获默认值为= 我很难理解上面的陈述-捕获默认值是什么?这是否意味着如果我使用C++ lambda的默认捕获是什么?,c++,c++11,lambda,C++,C++11,Lambda,我在读一篇文章,上面说 当前对象(*this)可以隐式捕获,如果 存在捕获默认值。如果隐式捕获,它总是 通过引用捕获,即使捕获默认值为= 我很难理解上面的陈述-捕获默认值是什么?这是否意味着如果我使用=作为捕获(这意味着复制当前范围内的变量),它也会隐式地将此添加到捕获中,从而允许我使用此 捕获默认值是什么 =或& 逗号分隔的捕获列表(包含在[]中的内容)可以选择以捕获默认值之一开头:=或&(可能是列表中的唯一元素)。如果存在捕获默认值,并且您尝试在lambda中使用必须捕获的变量(自动变量或此
=
作为捕获(这意味着复制当前范围内的变量),它也会隐式地将此
添加到捕获中,从而允许我使用此
捕获默认值是什么
=
或&
逗号分隔的捕获列表(包含在[]
中的内容)可以选择以捕获默认值之一开头:=
或&
(可能是列表中的唯一元素)。如果存在捕获默认值,并且您尝试在lambda中使用必须捕获的变量(自动变量或此
),则捕获默认值将通过值(=
)或引用(&
)捕获该变量
这是否意味着如果我使用=
作为捕获,它会隐式地将此
添加到捕获中
是的,但前提是您实际使用它(直接或通过访问类成员)
捕获默认值不会捕获任何变量,除非您在lambda中实际使用它们
捕获默认值是什么
=
或&
逗号分隔的捕获列表(包含在[]
中的内容)可以选择以捕获默认值之一开头:=
或&
(可能是列表中的唯一元素)。如果存在捕获默认值,并且您尝试在lambda中使用必须捕获的变量(自动变量或此
),则捕获默认值将通过值(=
)或引用(&
)捕获该变量
这是否意味着如果我使用=
作为捕获,它会隐式地将此
添加到捕获中
是的,但前提是您实际使用它(直接或通过访问类成员)
捕获默认值不会捕获任何变量,除非您在lambda中实际使用它们。为什么称为默认值?如果我们不指定任何内容,它是否会隐式添加到lambda中?@MistyD查看编辑。您也可以在“解释-捕获”下阅读解释。谢谢您的澄清。您能告诉我您所说的自动变量是什么意思吗?@MistyD One在函数范围(而不是类或命名空间范围)声明。为什么它被称为默认值?如果我们不指定任何内容,它是否会隐式添加到lambda中?@MistyD查看编辑。您也可以在“解释-捕获”下阅读解释。谢谢您的澄清。你能告诉我你所说的自动变量是什么意思吗?@MistyD-One在函数范围(而不是类或命名空间范围)声明。