Doing some calculations at compile time is useful. What sucks is when the language for expressing this is difficult to think about and interacts poorly with normal code.
It might prove that the language has decided not to have too many language features.
I dont know, I see macros and code generators as the one tool to battle boilerplate. Functions often have boilerplate syntax rules. Macros do not :^)
What sucks much more is, when one cannot extend the language properly and it needs a language commitee to change anything. Or when the way to extend it is so mistake and error prone, that one cannot get it right, needs many eyes viewing it for a few years, before it becomes probably correct.