C++ 使用lambda避免变量阴影
我的代码中有这样一个成员函数C++ 使用lambda避免变量阴影,c++,lambda,C++,Lambda,我的代码中有这样一个成员函数 void foo(bool result) { AFX_MANAGE_STATE(AfxGetAppModuleState()); //doing something here if(result) { AFX_MANAGE_STATE(AfxGetAppModuleState()); //do something here } } 这在VC编译器中给出警告警告C4456:“\u c
void foo(bool result)
{
AFX_MANAGE_STATE(AfxGetAppModuleState());
//doing something here
if(result)
{
AFX_MANAGE_STATE(AfxGetAppModuleState());
//do something here
}
}
这在VC编译器中给出警告警告C4456:“\u ctlState”的声明隐藏以前的本地声明
。为了避免这种情况,我计划像这样使用lambda,而不是创建一个新函数
void foo(bool result)
{
AFX_MANAGE_STATE(AfxGetAppModuleState());
//doing something here
if(result)
{
[](){AFX_MANAGE_STATE(AfxGetAppModuleState())};
//do something here
}
}
但它仍然抱怨警告,所以我想lambda块外部的声明默认情况下对内部是透明的吗?相关:如果结果为真,为什么要调用AFX_MANAGE_STATE两次?