How to use the result of __traits( allMembers , T ) with string mixins ?
Philippe Sigaud via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Apr 28 10:40:41 PDT 2014
On Mon, Apr 28, 2014 at 5:45 PM, Andrej Mitrovic via
Digitalmars-d-learn <digitalmars-d-learn at 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 :-)
More information about the Digitalmars-d-learn
mailing list