>>629
>for (i = m_player.begin(); i != m_player.end(); i++) {
>  if (i->is_need_delete()) {
>    delete(*i);
>    i = m_player.remove(i); //うろ覚え
>  }
>}
>こんな感じで呼び出し側が解体を保証することとする。責任は明確。

1. そのコード、呼び出し側に持つとゲームを作るごとに
コピペなりなんなりで書かないといけないんじゃ?

2. 親タスクが子タスクのstd::list<Child*>のようなものを持っていると、
親が死んだ子に対してアクセスしてしまう。これをどうやって防ぐの?