Notes
- Const objects are equivalent up the type tree of the type they are templated on
list<dog> instanceof list<animals> => true if the list is const or immutable.
- What is wrong with null. Null is of a type which is a sub-type of all other types. But it isn't really a subtype, it doesn't support any of the methods. When you return null and I expect a list you just broke type!
- There is a place for the null type in templates but there is no place for an acutal null object.
- What about being generic on the type you throw or throwing a templated type.