タイトルはおそらくあまり意味がないので、いくつかのコードから始めます。
class Foo : public std::vector<Foo>
{
};
...
Foo f;
f.push_back( Foo() );
なぜこれがコンパイラによって許可されるのですか?私の脳はこの段階で溶けています、それであなたがこれをしたい理由があるかどうか誰かが説明できますか?残念ながら、私はいくつかの本番C#コードで同様のパターンを見たばかりで、なぜ誰かがこのパターンを使用するのか疑問に思いました。