Filtering a tuple of containers with indices
    maik klein via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Tue Nov 17 06:32:12 PST 2015
    
    
  
The question is also posted on
https://stackoverflow.com/questions/33757981/filtering-a-tuple-of-containers-with-indicies
template tupIndexToRange(alias Tup, Indices...){
   import std.meta;
   static if(Indicies.length == 0){
     alias tupIndexToRange = AliasSeq!();
   }
   else{
     alias tupIndexToRange = AliasSeq!(Tup[ Indices[0] ][], 
tupIndexToRange!(Tup,Indices[1..$]));
   }
}
void main{
   alias Integrals = AliasSeq!(Array!int, Array!float, 
Array!double);
   Integrals integrals;
   alias IntegralRange = tupIndexToRange!(integrals,0,1);
}
void main{
   alias Integrals = AliasSeq!(Array!int, Array!float, 
Array!double);
   Integrals integrals;
   alias IntegralRange = tupIndexToRange!(integrals,0,1);
}
I want to achieve something like this
auto range = zip(tupIndexToRange!(integrals,0,1));
I think the main problem is that Tup[ Indicies[0] ] doesn't work, 
to me it should have expanded to this 
AliasSeq!(itegrals[0][],integrals[1][]);
This is roughly what I want to achieve
   alias Integrals = AliasSeq!(Array!int, Array!float, 
Array!double);
   Integrals integrals;
   integrals[0].insertBack(1);
   integrals[1].insertBack(2);
   integrals[2].insertBack(3);
   auto range = zip(tuple(integrals[0][],integrals[1][]).expand);
   writeln(range);
   foreach(e;range){
     writeln("element: ",e);
   }
But instead of "auto range = 
zip(tuple(integrals[0][],integrals[1][]).expand);" I want it to 
be generic "auto range = zip(tupIndexToRange!(integrals, 
AliasSeq!(0, 1)).expand);"
Maybe I need use mixins?
    
    
More information about the Digitalmars-d-learn
mailing list