On Friday, 28 July 2017 at 22:06:27 UTC, Ali Çehreli wrote:
I think it works:template replace(T) { template inside(Src...) { template from(Dst...) { import std.meta; enum f = staticIndexOf!(T, Src); static if (f == -1) { alias from = Src; } else {alias from = AliasSeq!(Src[0 .. f], Dst[f], inside!(Src[f + 1 .. $]).from!(Dst[f + 1 .. $]));} } } } unittest { import std.meta : AliasSeq; replace!long .inside!(long, int, long, long, float, long) .from!(int, byte, char, double, dchar, real) a;static assert(is (typeof(a) == AliasSeq!(int, int, char, double, float, real)));} void main() { } Ali
Thanks!
