std.metastrings.ToString! problems

BCS ao at pathlink.com
Thu Jul 23 16:18:29 PDT 2009


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





More information about the Digitalmars-d mailing list