1

私はラムダについて学んでいるばかりの初心者なので、外部関数からローカル変数をキャプチャし、その値を出力して 0 になるまでデクリメントするラムダを作成したいだけです。コンパイルはしますが、表示されませんなんでも。なんで?

void dummyFn(int &num)
{
    int j = num;                                  
    [&j](){
        while (j != 0)
        {
            cout << j << endl;
            --j;
        }
    };
}
4

3 に答える 3

4

ラムダを定義しましたが、実行することはありません。試す

auto mylambda = [&j](){...}; 
mylambda();
于 2013-10-05T19:55:08.840 に答える
2

「コンパイルはできますが、何も表示されません。」

を使用して呼び出す必要があります()

void dummyFn(int& num)
{
    int j = num;                                  
    [&j](){
        while (j != 0)
        {
            cout << j << endl;
            --j;
        }
    } (); // Call the function !
}
于 2013-10-05T19:56:44.227 に答える
0

ラムダが定義されましたが、実行する必要があります。

auto fn = [&j](){ ... };  // definition
fn();                     // Run

あるいは:

[&j](){ ... } ();
//            ^^^

どちらの例も関数を実行しています。

于 2013-10-05T19:56:38.070 に答える