loop through specific class members
Sergey Gromov
snake.scaly at gmail.com
Mon Jan 26 18:26:28 PST 2009
Mon, 26 Jan 2009 04:50:10 +0000 (UTC), BCS wrote:
> Hello Sergey,
>
>> foreach() is a runtime construct. It may be *interpreted* at
>> compile-time, but it's interpreted as if it were run time
>> nevertheless. It dynamically changes the value of 'member' variable.
>
> OTOH a foreach on a tuple is a compile time construct, but it is a distinct
> construct from the array foreach and is not what you are using (If i'm reading
> stuff correctly)
I somehow missed that in the specs. Definitely, this works:
template Tuple(T...)
{
alias T Tuple;
}
void foo()
{
foreach (a; Tuple!(int, char, long))
pragma(msg, a.stringof);
}
but this doesn't:
template Tuple(T...)
{
alias T Tuple;
}
void foo()
{
foreach (a; Tuple!("a", "b", "c"))
pragma(msg, a);
}
$ dmd -c test.d
test.d(8): Error: string expected for message, not 'a'
test.d(8): Error: string expected for message, not 'a'
test.d(8): Error: string expected for message, not 'a'
*This* seems like a bug to me.
More information about the Digitalmars-d-learn
mailing list