@spip My general rule for using a template is that there is some block of code to write that is tedious to break into a proc (it needs access to lots of local vars) or it needs to avoid copies of large objects.
If there is any hint of needing to modify or generate symbols, I use a macro. Generally and succinctly my rule is: Code replacement -> template Code generation/modification -> macro
