Bug 17815 – Allow casting of AliasSeq

Status
NEW
Severity
enhancement
Priority
P4
Component
dmd
Product
D
Version
D2
Platform
x86
OS
All
Creation time
2017-09-07T13:50:43Z
Last change time
2024-12-13T18:54:27Z
Assigned to
No Owner
Creator
Simen Kjaeraas
Moved to GitHub: dmd#19314 →

Comments

Comment #0 by simen.kjaras — 2017-09-07T13:50:43Z
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.
Comment #1 by robert.schadek — 2024-12-13T18:54:27Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/19314 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB