std.metastrings.ToString! problems

Daniel Keep daniel.keep.lists at gmail.com
Thu Jul 23 15:54:36 PDT 2009


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.



More information about the Digitalmars-d mailing list