Yes, this reminds me of meta-programming in languages like Python, it's useful if you want to create a framework like Django, but if you work on products, chances are good you should not use it.
Because they are really really difficult to get right almost as difficult as building a new language. But when they work well they can be a real boost.