digitalmars.D.bugs - [Issue 17815] New: Allow casting of AliasSeq
- via Digitalmars-d-bugs (32/32) Sep 07 2017 https://issues.dlang.org/show_bug.cgi?id=17815
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: nobody puremagic.com Reporter: simen.kjaras 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. --
Sep 07 2017