プログラミング言語

C++ / 14

22 コメント
views
0 フォロー
14
とくに 2020/07/03 (金) 16:22:29

キャプチャ

int a = 10;

//ラムダ式のスコープ外の変数を使用するには変数のキャプチャを指定する。
auto func1 = [a]{ //変数aを指定
	cout << a << endl;
}

auto func2 = [a]{
	a = 5; //コピーしたキャプチャは書き換えられない。
}

auto func3 = [a]()mutable{
	a = 5; //mutable属性を指定すれば書き換えることができる。
}

auto func4 = [&a]{
	a = 7; //参照キャプチャは書き換えられる。
}

int x = 20,y = 4,z = 98;

auto func5 = [=]{
	cout << x << "," << y << "," << z << endl; //複数の変数をキャプチャするには=を使う
}

auto func6 = [&]{
	cout << x << "," << y << "," << z << endl; //参照でも同様。
}

auto func7 = [a,x,&y,&z]{
	cout << a << "," << x << "," << y << "," << z << endl; //個別に指定することも可能。
}
通報 ...