2013-10-05 4 views
1

Я новичок, который только что узнал о лямбдах, поэтому я просто хочу сделать лямбду, которая захватывает локальную переменную из внешней функции и должна печатать ее значение и уменьшать ее до тех пор, пока она не достигнет 0. Это компилируется, но ничего не отображает. Зачем?C++ Beginner Lambda's

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

Почему вы процитировать себя ?! –

ответ

4

Вы определили лямбду, но вы ее никогда не запускаете. Попробуйте

auto mylambda = [&j](){...}; 
mylambda(); 
0

Ваш лямбда определяется, но теперь вы должны запустить его:

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

Или даже:

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

Оба примера работают функции.

2

«Он компилирует, но ничего не отображает».

Вы должны вызвать его с помощью ()

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