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...