I think your perception is heavily colored by your bad
experience with
C++. :) Seriously, you should try some metaprogramming in D
sometime,
and experience for yourself what *real* metaprogramming feels
like.
Forget about that sorry mess that is C++; try it out afresh in
D and
see, you might even like it afterwards. ;)
I totally sympathize, 'cos I came from a strong C/C++
background, and
C++ templates are just... well, I can say they deserve their bad
reputation. But unfortunately, that made people associate
metaprogramming with C++'s poor implementation of it, when
actually,
metaprogramming done right is actually very pleasant to use.
T
I don't doubt that there are forms of metaprogramming that are
MUCH better than C++, actually C++ is among the worst. But even
in dunno, a lisp with hygienic macros, metaprogramming should be
used imho with caution, because it's so easy to introduce all
kind of new constructs that look nifty and shorten the code, but
one has to understand that each time you add one it's one more
foreign syntax that is local to a context and people have to
learn and recognize