Say an Object has a templated TYPE (for a very good reason)

```
template <typename T> class Object {
};

```

I want an Object to be able to contain an array of subobjects.

```
template <typename T> class Object {
  vector< Object<T>* > subobjects;
};

```

However, the subobjects CAN BE OF ANY TYPE. That is, a subobject can be an Object of a different T than it’s parent.

The language is enforcing a restriction that doesn’t need to be there. How do I fix this?