I make my list implementation (I will ask without "bicycles", so I want to do this). I want the parameterized type to be necessarily a successor.
class Item { Item& prev; Item& next; }; class SomeClass : Item {...}; class SomeClass2 {...}; template <class T (SHOULD EXTEND ITEM)> List {...}; int main(){ List<SomeClass> list; // Okay List<SomeClass2> list2; // Error [SomeClass2 does not extend Item] }