考慮這個例子:捕獲的變量隱藏在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