> It also demonstrates what talented hackers can achieve with mechanisms that were never intended to be used this way.
But those clever hackers influenced the future direction of the language, making metaprogramming an integral part that _is_ intended to be used that way now, so C++11 provides variadic templates and extended SFINAE and cleans up a number of warts, all making the mechanisms more regular and more powerful. (Which may well make some people like C++ even less, but noone forces you to use those features, they're there for library authors to simplify writing the kind of libraries found in Boost.)
> It's a cute and useful hack when it works, but anyone who's looked at three pages of error-spaghetti when they make a 1-character typo understands that it's incredibly fragile.
Things should (I hope) improve. The ability for library authors to remove functions from overload resolution (à la enable_if) are a sort of "concepts-lite" that can prevent cascade of unrelated errors, static assertions can reduce an invalid instantiation to a single error. Library writers have more tools available to make more robust template libraries with more user-friendly failure modes. And compilers can do more to help too.