BCS schrieb:
template Tpl(T...)
{
 alias T Tpl;
}

template Range(int l, int u)
{
 static if(l<u)
   alias Tpl!(l, Range!(l+1,u)) Range;
 else
   alias Tpl!(l) Range;
}

const char[][] set = ["Hello"[], "world" ];

void main()
{
foreach(str; Range!(0,set.length-1)) // compile time foreach over the numbers from 0 to set.length-1
   pragma(msg, set[str]);
}


Still doesn't work for this code (used with a mixin):
template classMixin()
{
static this()
{
        auto members = __traits(allMembers, typeof(this));
        foreach(m; Range!(0, members.length-1))
        {
                pragma(msg, members[m]);
static if (is (typeof(__traits(getMember, this, members[m])) F == function))
                {
                        pragma(msg, "function");
                }
        }
}
}

-> Error: string expected for message, not 'members[0u]'

Leaving out the first pragma, compiles but doesn't output anything.
Replacing members[m] with a valid method name, such as "__ctor" it outputs function correctly :(

Reply via email to