https://issues.dlang.org/show_bug.cgi?id=17815
Issue ID: 17815 Summary: Allow casting of AliasSeq Product: D Version: D2 Hardware: x86 OS: All Status: NEW Severity: enhancement Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: simen.kja...@gmail.com The following code does not currently compile: import std.meta : AliasSeq; AliasSeq!(int, float) a; auto b = cast(AliasSeq!(byte, byte))a; Casting a set of values to a set of types is something that comes up every now and then. It can currently be done using a variation of this function: template castTuple(T...) { auto castTuple(Args...)(Args args) if (Args.length == T.length) { static if (T.length == 0) { return tuple(); } else { auto result = .castTuple!(T[1..$])(args[1..$]); return tuple(cast(T[0])args[0], result.expand); } } } The compiler however, has all the necessary information to make the first example compile. --