1
#include "stdafx.h"
#include <functional>
#include <iostream>
#include <string>
std::function<void(int)> Foo()
{
int v = 1;
int r = 2;
auto l = [v, &r](int i)
{
std::cout << v << " " << r << " " << i << std::endl;
};
return l;
}
int main()
{
auto func = Foo();
func(3);
return 0;
}
「1 2 3」と表示されますが、「1 -858993460 3」と表示されるのはなぜですか? r
を参照して撮影し、それがローカル変数だとFoo()
戻った直後に破棄されますされているので(std :: function)からのlambdaの出力参照渡し値?