Reply to Daniel,

asd wrote:

I'm trying to write basic compile-time function:

string usedForMixin()
{
int n=0;
/* do stuff */
return "int x = " ~ std.metastrings.ToString!(n) ~ ";";
}
However I'm getting:
/usr/local/bin/../src/phobos/std/metastrings.d(104): Error:
expression cast(long)n is not a valid template value argument
If I change int to long:
/usr/local/bin/../src/phobos/std/metastrings.d(87): Error: expression
n < 0L is not constant or does not evaluate to a bool
(D2, OS X)

That's because n isn't a compile-time constant.  You can't instantiate
a template with runtime variables.


that includes "runtime variables" used in CTFE (this is because CTFE functions are also normal runtime functions).


Reply via email to