On Monday, 28 April 2014 at 17:40:54 UTC, Philippe Sigaud via Digitalmars-d-learn wrote:
On Mon, Apr 28, 2014 at 5:45 PM, Andrej Mitrovic via
Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote:

If you need to store the tuple as an array to some variable, then you would use that syntax. It all depends on what you're trying to do from the call site. Ultimately it won't matter much once we finally get a
proper 'static foreach' feature in D.

I guess a common use case is to create an array with [__traits(...)], and use it inside a function, iterating on it and creating a string
with the elements. The string is then mixed in with a CTFE call.

string makeCode(...) {
    enum members = [ __traits(allMembers, MyStruct) ];

    string result;
    foreach (m; members)
    {
result ~= "writeln( `" ~ m ~ "` , \" : \" , ( MyStruct." ~ m ~
".offsetof ) );");
    }
    return result;
}

mixin(makeCode());

I don't know what I used it for in the tutorial, though :-)

You can do the same iterating directly over allMembers list, why would you prefer array here?

Reply via email to