C++14 - Lambda fonksiyonlarında yakalanan ifadelerde ilk değer

c++
c14

#1

C++11 ile gelen özelliklerden biri olan lambda ifadelerinde içinde olduğu bilinirlik alanından value-copy veya reference ile değişkenler, lambda fonksiyonunun gövdesine enjekte edilebiliyordu.

C++14 teki değişiklik ile bu değişkenlere başlangıç değeri de verilebilmekte bu da aslında std::move edilebilmelerinin önünü açıyor.

#include <iostream>
#include <iomanip>


using namespace std;

int main()
{
    int i = 10;
    auto lambda1 = [i = 5] () {
         cout << i << endl;
    };

    lambda1();

    std::unique_ptr<int> ptr(new int(10));
    auto lambda2 = [value = std::move(ptr)] {return *value;};

    cout << lambda2() << endl;

    return 0;
}