#include <iostream>
#include <functional>
using namespace std;


int main() {
	// ラムダ式で無名関数をつくれるようになった。
	// functionで受け取り可能。
	// [キャプチャ1, キャプチャ2, ...](引数1, 引数2, ...) { 処理 } という風に記述。
	function<int(int, int)> func = [](int a, int b) {
		return a + b;
	};

	int result = func(1, 2);
	cout << result << endl;


	// もちろん、functionで受け取らなくてもそのまま実行も可能。
	[]() {
		cout << "Hoge!" << endl;
	}();
	
	// 引数がない場合、()は省略可能。
	[] {
		cout << "Fuga!" << endl;
	}();
	
	return 0;
}