イベントモドキ
std::list<std::function<bool ()>> ev_list; // 終了条件を満たしたとき、trueを返す関数オブジェクト auto lambda = []()->bool { static int i=0; cout << i++ << endl; if(i <= 20) return false; else return true; }; // リストの中にブチ込む ev_list.push_back(lambda); // 無限ループ while(true){ // list内の全ての関数オブジェクトを実行し、終了条件を満たしているものを削除する for(auto it = ev_list.begin(); it != ev_list.end();){ if( (*it)() ){ it = ev_list.erase(it); continue; } it++; } }
こういう類の操作って、汎用性高くね? とか一発ネタゲーム作ってて思った。
スレッドでイベント実行すると色々大変だし。とか。
一応、このコードまんまだと終了条件がstaticなのでダメダメです。