On Tuesday, 26 March 2013 at 16:31:51 UTC, Jonathan Crapuchettes wrote:
but I wish there was a cleaner way to do it. If the FieldSpec template was moved into the public section, it would allow for the name member to
be accessed.


Not sure this qualifies as clean, but it's an option:

import std.typecons, std.stdio, std.traits, std.conv;

string[] tupleNames(T)()
{
    string[] names;
    uint count = 0;
    bool matchNext = false;
        foreach(m; __traits(allMembers,T))
        {
            if (matchNext)
            {
                names ~= m;
                matchNext = false;
                count ++;
            }

            if (m == "_" ~ count.to!string)
            matchNext = true;
        }
        return names;

}

pragma(msg, tupleNames!(Tuple!(int,"a",float,"b",string,"c")));

void main(){ }

Reply via email to