http://d.puremagic.com/issues/show_bug.cgi?id=6471



--- Comment #3 from Ellery Newcomer <[email protected]> 2013-07-01 
17:12:25 PDT ---
Depends on whether you consider it a dmd issue or a phobos issue.

I just took a second look at this and.. you get a recursion depth of exactly
500 for templates. I don't recall this restriction being documented anywhere,
so if it isn't, it should be, and after that maybe take up the question of
whether it is an acceptable restriction (with ctfe maybe it is now).

import std.string;
enum s = "abcdefghijklmorpshtn";
static assert(s.length == 20);
enum t = s ~ s;
static assert(t.length == 40);
enum u = t ~ t;
static assert(u.length == 80);
enum v = u ~ u;
static assert(v.length == 160);
enum w = v ~ v;
static assert(w.length == 320);
enum x = w ~ v ~ s;
static assert(x.length == 500);
/*
// ok!
enum x = w ~ v ~ s[1..$];
static assert(x.length == 499);
*/

template iter(string s, T) {
    static if(s.length == 0) {
        enum iter = "";
    }else{
        enum iter = toUpper(s[0..1]) ~ iter!(s[1..$], T);
    }
}

pragma(msg, iter!(x, int));

void main() {}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------

Reply via email to