考虑这个例子:捕获的变量隐藏在lambda中传递变量。如何取消隐藏?
int main()
{
int a = 100;
std::cout<<[=,&a](int a,int b){return a+b;}(99,1);
return 0;
}
输出为101
,而不是我的100
期望。
我不能指定为[&a,=]
,因为它会给出错误。
如何避免名称隐藏并引用参数。我知道更改名称是选项,但我很好奇。也参照标准,将有助于
编辑: 我使用GCC 4.7.1
编辑:
下面是该演示的ideone链接。我用C++ 4.7.2编译器
ideone
你就不能重命名** **参数和外部局部变量的一个? – 2013-05-28 17:33:40
是的,我已经提到,在我的质疑,但我很好奇,为什么可以做到? –
'[&,=]'通过引用**和**传递所有变量,并通过同时复制全部变量!这对我来说毫无意义。 – deepmax