1

vs2012(vc11) を使用して c++ プログラムを作成しています。少し複雑なラムダ式を使用しようとしているとき。

    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 コンパイルがネストされたラムダを & でうまく理解できないと推測します。

その後、vc11 は正常にコンパイルできます。それは vc11 のコンパイル バグということですか?

4

0 に答える 0