String Metaprogramming
anonymous via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Jul 18 10:19:34 PDT 2015
On Saturday, 18 July 2015 at 16:18:30 UTC, Clayton wrote:
> Thanks , you were right . It seems there are some key words
> though which one has to use so that the code gets executed on
> compile-time .For example I had to change the second forloop to
> a foreach loop,
`for` loops work just fine in CTFE. `foreach` is usually nicer,
though (regardless of CTFE or not).
> and then put and enum to ensure that TableFromCompiler gets
> evaluated at compiletime. Having written the code this way
> though gives rise to some other question, D supports 2
> approches to compiletime metaprogramming i.e. CTFE and
> Templates, it seems am not very sure which paradigm my code
> falls in.
Your computeAtCompileTime is a template that results in a
function when instantiated. You're calling such a generated
function and you're assigning the result to an enum, which makes
it a CTFE call.
So there's both CTFE and a template in your code.
You could probably do the whole pre-computation without CTFE,
using only templates. But (here) CTFE is more straight forward as
you can just write normal run time D.
More information about the Digitalmars-d-learn
mailing list