If I have a normal (weak) enumeration, I can use its enumerated values as non-type template parameters, like so:
enum { Cat, Dog, Horse }; template
I'm sorry, I have to tell you that
Take the macro, put it into a scary named header and protect it from your colleague's cleanup script. Hope for the best.