[Issue 1464] New: "static" foreach breaks CTFE

Reiner Pope some at address.com
Fri Aug 31 15:03:25 PDT 2007


BCS wrote:
> d-bugmail at 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 at digitalmars.com
>>         ReportedBy: reiner.pope at 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)

It's aliasing the template instantiation, not the tuple. It should 
compile in 1.x as well as 2.x.


More information about the Digitalmars-d-bugs mailing list