I needed tt for a set of methods that operate on two different classes in almost the same way. It's still just boilerplate code (the object that needed this code gen was a factory object with some convenience routines).
As for macros - C preprocessor style ones, that is - you can use TT macros. See Template::Manual::Directives.
zz zZ Z Z #!perl