digitalmars.D.bugs - [Issue 1464] New: "static" foreach breaks CTFE
- d-bugmail puremagic.com (29/29) Aug 31 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1464
- BCS (4/41) Aug 31 2007 That compiles at all? in the 1.x versions you can't have an alias of a
- Reiner Pope (3/47) Aug 31 2007 It's aliasing the template instantiation, not the tuple. It should
- BCS (7/15) Aug 31 2007 I'm looking at the above line.
- d-bugmail puremagic.com (9/9) Sep 28 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1464
http://d.puremagic.com/issues/show_bug.cgi?id=1464 Summary: "static" foreach breaks CTFE Product: D Version: 2.003 Platform: PC OS/Version: Windows Status: NEW Keywords: rejects-valid Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla digitalmars.com ReportedBy: reiner.pope gmail.com The following code gives compile-time error, "cannot evaluate gen() at compile time." Removing the "i" from the foreach fixes this. template Tuple(T...) { alias T val; } alias Tuple!(int) Tup; string gen() { foreach (i, type; Tup.val) { } return null; } string text = gen(); --
Aug 31 2007
d-bugmail puremagic.com wrote:http://d.puremagic.com/issues/show_bug.cgi?id=1464 Summary: "static" foreach breaks CTFE Product: D Version: 2.003 Platform: PC OS/Version: Windows Status: NEW Keywords: rejects-valid Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla digitalmars.com ReportedBy: reiner.pope gmail.com The following code gives compile-time error, "cannot evaluate gen() at compile time." Removing the "i" from the foreach fixes this. template Tuple(T...) { alias T val; } alias Tuple!(int) Tup; string gen() { foreach (i, type; Tup.val) { } return null; } string text = gen();That compiles at all? in the 1.x versions you can't have an alias of a tuple in a template other than if the tuple name is the same as the name of the template (It's a known bug, not a language restriction)
Aug 31 2007
BCS wrote:d-bugmail puremagic.com wrote:It's aliasing the template instantiation, not the tuple. It should compile in 1.x as well as 2.x.http://d.puremagic.com/issues/show_bug.cgi?id=1464 Summary: "static" foreach breaks CTFE Product: D Version: 2.003 Platform: PC OS/Version: Windows Status: NEW Keywords: rejects-valid Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla digitalmars.com ReportedBy: reiner.pope gmail.com The following code gives compile-time error, "cannot evaluate gen() at compile time." Removing the "i" from the foreach fixes this. template Tuple(T...) { alias T val; } alias Tuple!(int) Tup; string gen() { foreach (i, type; Tup.val) { } return null; } string text = gen();That compiles at all? in the 1.x versions you can't have an alias of a tuple in a template other than if the tuple name is the same as the name of the template (It's a known bug, not a language restriction)
Aug 31 2007
Reiner Pope wrote:I'm looking at the above line. http://d.puremagic.com/issues/show_bug.cgi?id=1241 However I seem to remember that the problem is a bit more general than the fist listed case. Well I'll gave to revisit some of that.It's aliasing the template instantiation, not the tuple. It should compile in 1.x as well as 2.x.template Tuple(T...) { alias T val; }
Aug 31 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1464 bugzilla digitalmars.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED Fixed dmd 1.021 and 2.004 --
Sep 28 2007