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