is there any way to determine if an identifier is a template, and how many parameters it has? i'm doing a multimethods kind of thing to see if you can simulate virtual template functions...