[Issue 17815] New: Allow casting of AliasSeq
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Thu Sep 7 13:50:43 UTC 2017
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 at puremagic.com
Reporter: simen.kjaras at 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.
--
More information about the Digitalmars-d-bugs
mailing list