It seems rather fundamental to be able to compose a new struct from a given struct using inheritance. Why is this not allowed? struct slist_node { slist_node* next; }; template <class T> struct slist_node<T>: public slist_node { T data; };