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