(from reading chapter 3 of modern c++ design) typelist.hpp: class NullType {}; struct EmptyType {}; template <class T, class U>