クラス内クラスで、元クラスのインスタンスをメンバに持つというのは不可能なのでしょうか。

class hoge{
public:
 class fuga{
  public:
   hoge hogehoge;
   std::vector<hoge> vhoge;
 };
};

とやると、hogehogeがincomplete typeと言われます。
ところが、hogehogeを消してvhogeのみにするとコンパイル可能になります。
こういった書き方は不可能なのでしょうか、また、コンパイルを通ったhogeのvectorは使用しても大丈夫なのでしょうか。