使用lambda来避免变量阴影

时间:2015-03-04 05:16:00

标签: c++ lambda

我的代码中有一个成员函数,如此

void foo(bool result)
{
    AFX_MANAGE_STATE(AfxGetAppModuleState());
    //doing something here

    if(result)
    {
        AFX_MANAGE_STATE(AfxGetAppModuleState());
        //do something here
    }    
}

这在VC编译器warning C4456: declaration of '_ctlState' hides previous local declaration中发出警告。并且为了避免这种情况,我计划像这样使用lambda,而不是创建一个新函数。

void foo(bool result)
{
    AFX_MANAGE_STATE(AfxGetAppModuleState());
    //doing something here

    if(result)
    {
        [](){AFX_MANAGE_STATE(AfxGetAppModuleState())};
        //do something here
    }    
}

但它仍然抱怨警告,所以我认为lambda块外的声明默认是对内部透明的吗?

0 个答案:

没有答案