Название, вероятно, не имеет большого смысла, поэтому я начну с некоторого кода:
class Foo : public std::vector<Foo>
{
};
...
Foo f;
f.push_back( Foo() );
Почему это разрешено компилятором? На этой стадии мой мозг тает, поэтому кто-нибудь может объяснить, есть ли причины, по которым вы хотели бы это сделать? К сожалению, я только что видел подобный шаблон в некотором производственном коде на C # и удивлялся, почему кто-то может использовать этот шаблон.