派生クラスでオーバーライドした仮想関数内で、delete *this;としたい状況にあるんですが、
派生クラスのコレクション(list<Base*>型)から削除するのが問題で、どのように書いたらいいのか困っています。

// 考えてみた方法1(Baseにコレクションを持たせるのはどうか?)
class Base {
public:
virtual ~Base()=0;
virtual void F()=0;
static list<Base*> obj_;
};

class Derived : Base {
public:
void F() {
obj_.erase(find(obj_.begin(), obj_.end(), this));
}
};