On Sat, 09 Apr 2011 16:20:06 -0400, Andrej Mitrovic wrote:

> I know there's traits to get strings at compile time, e.g.: auto b = [
> __traits(allMembers, Metrics) ];
> 
> but this doesn't help me try out those enum values at runtime. It could
> almost work if I could use a mixin() in a foreach loop, but that's lucid
> dreaming.
> 
> Another alternative might be to create an array out of the enum, but I
> don't know of any way of doing this.

You have everything you need, just put them all together:

enum Metrics : int
{
        SM_CXSCREEN = 0,
        SM_CYSCREEN,
        SM_CXVSCROLL,
        SM_CYHSCROLL,
        SM_CYCAPTION,
        SM_CXBORDER,
}

void foo(int m)
{
}

void main()
{
    foreach (m; __traits(allMembers, Metrics))
    {
        foo(mixin("Metrics." ~ m));
    }
}

Reply via email to