捕获的变量隐藏在lambda中传递变量.怎么取消隐藏?

Kou*_*tty 6 c++ c++11

考虑这个例子:

int main()
{
    int a = 100;
    std::cout<<[=,&a](int a,int b){return a+b;}(99,1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出101不是我期望的100.

我不能指定,[&a,=]因为它给出了错误.

如何避免名称隐藏并引用参数.我知道更改名称是选项,但我很好奇.也参考标准会有所帮助

编辑:我正在使用gcc 4.7.1

编辑:

这是显示演示的ideone链接.我用C++编译器4.7.2那里
ideone

Cap*_*ous 7

我在标准中找不到任何与lambdas相关的信息,表明你的结果是预期的行为.我同意Andy的观点,即这是GCC中的一个错误.Linux上的GCC 4.7.2,MinGW的GCC 4.7.2和MinGW的GCC 4.8.0产生与问题相同的结果,但VC++ 10和VC++ 11产生预期的结果.

您应该考虑提交错误报告