1

我正在使用 vs2012(vc11) 编写一个 c++ 程序。当我尝试使用有点复杂的 lambda 表达式时。

    RasDial(NULL, NULL, 0, 0, &[=]()
    {
    RasDial(NULL, NULL, 0, 0, &[=](){}, 0);
    }, 0);

然后编译给了我一个错误:C2101 & on constant。我改变了地方,然后是这样的代码:

RasDial(NULL, NULL, 0, 0, &[=](){
    auto func = [=](){};
    RasDial(NULL, NULL, 0, 0,&func, 0);
}, 0);

通过比较,您可以成功编译以下表达式:

RasDial(NULL,NULL,0,0,&[](){},0);

我推断 VC 编译不能很好地理解带有 & 的嵌套 lambda。

然后vc11就可以编译成功了。这是否意味着它是一个 vc11 编译错误?

4

0 回答 0