add rules about templates and generic programming
add personal-understanding about understanding implicit interfaces and
compile-time polymorphism
add personal-understanding about understanding the two meanings of
typename
add personal-understanding about know how to access names in templatize
base classes
add personal-understanding about factoring parameter-independent code
out of templates