language_fan wrote:
Sat, 10 Oct 2009 10:26:11 +0200, Don thusly wrote:

CTFE doesn't mean "string mixins using CTFE". It just means CTFE. (BTW
you can do string mixins with templates only, no CTFE, if you are
completely insane).

CTFE without mixins is rather limited form of metaprogramming. You can basically only initialize some static non-code data, and not much more.

That's a lot, though. For example, you can perform the compilation step for a regexp, and determine whether it needs to be implemented with backtracking, or not. CTFE is perfect for parsing DSLs.

String mixins with templates was the only way to go before CTFE became possible -- those were the times!

They were very short times <g>. String mixins were introduced in DMDD1.005, (5 Feb 2007) and CTFE came in 1.006, ten days later.
But that was indeed a very fun time for D.

I did a lot of early metaprogramming work with template value parameters, before string mixins. It was quite ugly, and painful to write. D metaprogramming techniques have gradually got less hacky over time.

Reply via email to