On Wed, Oct 7, 2009 at 11:21 AM, Don <nos...@nospam.com> wrote: > Steven Schveighoffer wrote: >> >> On Wed, 07 Oct 2009 09:17:59 -0400, Jarrett Billingsley >> <jarrett.billings...@gmail.com> wrote: >> >>> It's also insanely kludgy and ugly. Bleh. > > Ugly, yes. Kludgy, I don't think so. It's only a syntax issue. The basic > concept of passing meta-code to the compiler in the form of raw text is > simple: > > mixin() if you want to insert something into the parse step. > is(typeof()) if you want to catch it again after the syntax pass. > stringof if you want to catch it again after the semantic pass. > > And that's all. The syntax is ugly, but the semantics are beautifully > elegant.
It'd be nice if they actually worked. is(typeof()) fails for *any* error, and it eats those errors too, so if your code fails to compile for some reason other than the one you're testing for, welp, good luck figuring that out. And don't even get me started on .stringof. Also, see my post on the "get template and its instantiation parameters" thread for my detailed opinion on them. > By contrast, something like Nemerle macros are a kludge. The idea of > providing a 'hook' into the compiler is a horrible hack. It exposes all > kinds of compiler internals. Yes, it has nicer syntax. I.. don't even know how to begin to respond to that.