Inappropriate actual type parameters are simply discovered by the compiler
Appropriateness is not expressed by inheritance relationships
Type parameter may be deduced automatically in function templates