On Wednesday, 10 July 2013 at 01:10:37 UTC, Meta wrote:
On Tuesday, 9 July 2013 at 22:49:38 UTC, JS wrote:
It seems possible that we can print CTFE variables at compile time by using string mixes as the code below demonstrates.

The problem is that we can not pass a variable to a template to create a print routine in the first place. e.g., we can't do mixin a!(s) if s is a string since s can't be read, supposedly, at compile time.

I think there's been mention a couple times of a ctfeWrite function that can print values at compile-time, but so far nobody's implemented it.


I've heard of this too and even tried __ctfeWrite and it worked!! Well, at least no compile time error... just didn't print anything.

I believe the error "variable can't be read at compile time" is due to the fact that the compiler doesn't have access to/isn't aware of the frame pointers(the stack) of the functions. This means that "local" variables can't be used in compile time, before ctfe, constructs because there is no way to get at the data.

This seems like a limitation of the system and not some innate reason why it should fail...

Reply via email to