Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用lambda避免变量阴影_C++_Lambda - Fatal编程技术网

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两次?