イベントモドキ

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なのでダメダメです。