Re: Constructing a tuple dynamically

2015-02-03 Thread thedeemon via Digitalmars-d-learn

On Tuesday, 3 February 2015 at 10:32:47 UTC, Pena wrote:

How can I use this code or something similar to dynamically
construct a tuple containing types of fields marked as 
@Cloneable?


import std.traits, std.typetuple;

template CloneableTypes(S) {
  template IsCloneable(string M) {
enum IsCloneable = staticIndexOf!(Cloneable, 
__traits(getAttributes, __traits(getMember, S, M))) = 0;

  }

  template FieldType(string M) {
alias FieldType = typeof(__traits(getMember, S, M));
  }

  alias CloneableTypes = staticMap!(FieldType, 
Filter!(IsCloneable, __traits(allMembers, S)));

}

Then CloneableTypes!Foo is a TypeTuple (int, string).


Re: Constructing a tuple dynamically

2015-02-03 Thread Kagamin via Digitalmars-d-learn

Try variadic templates with recursion.
For example see http://dpaste.dzfl.pl/f49a97e35974