On Friday, 24 January 2020 at 16:21:48 UTC, Jan Hönig wrote:
I am looking for a detailed explanation or showcase regarding CTFE and string mixins.
I want to play with D a little bit regarding code generation.
I would like to have a pseudo-AST, consisting of a few classes, to represent some calculation. Think of a loop, some statements, and expressions.

To do that, I want to be certain that this AST can be computed and generated during compile-time, with CTFE and string mixins.

Are there limitations regarding CTFE (GC, global variables, static variables, templates, ....)? Are there any limitations regarding string mixins (which are not already included int the CTFE limitations)?

For CTFE: functions should be pure. Therefore you cannot use global or static variables. Constants (enums) are perfectly fine to use though. I don't know the state of the GC and CTFE. I recall that there might be some complexity when using the `new` keyword.

https://dlang.org/spec/function.html#interpretation

Basically the only limitation of string mixins is that a single string should evaluate to valid D code, opposed to C macros. So
int y mixin("= 6");
doesn't compile, while
int y = mixin("6");
or
mixin("int y = 6;");
does. You can use CTFE to compose the string.

Reply via email to