Templates with strings
BCS
none at anon.com
Sat Jul 3 17:43:50 PDT 2010
Hello Mike,
> I'm trying to compile the following file. Can somebody explain to me
> how I can rewrite it so that I don't get "Error: non-constant
> expression"? All I'm trying to do is create, using templates, a string
> of all characters between two given characters:
>
1) where did you get that error? (I'm lazy, sorry)
2) is there a reason you don't use CTFE?
dchar[] Between(dchar start, dchar stop)
{
if(start > stop) { auto t = start; start = stop; stop = t; }
dchar[] ret;
for(dchar d = start; d<=stop; d++) ret ~= d;
return ret;
}
import std.stdio;
void Go(dchar[] s)(){writef("%s\n", s); }
void main(){Go!(Between('a','g'))();}
> 1 module ua;
> 2
> 3 template dcharInterval(immutable(dchar) start, immutable(dchar)
> stop)
> 4 {
> 5 static assert(stop >= start);
> 6 static if(start == stop)
> 7 dstring dcharInterval = [start];
> 8 else
> 9 dstring dcharInterval = [start] ~ dcharInterval!(start + 1,
> stop);
> 10 }
> 11
> 12 dstring LATIN = "\u00AA"d ~ "\u00BA"d ~ dcharInterval!(0x00C0,
> 0x00D6);
> 13
> Thanks.
>
--
... <IXOYE><
More information about the Digitalmars-d-learn
mailing list