
1
4
3
string parseHeck(...) {
import core.vararg;
foreach (size_t index, TypeInfo type; _arguments) {
if (is(type == int)) {
writeln("standard match integer.");
}
// Chaos.
switch (type.toString) {
case "int": {
writeln("switched int");
break;
}
case "immutable(char)[]":
writeln("switched string");
break;
case "double": {
"switched".writeln = " double";
break;
}
default:
writeln = "explosion";
}
}
// Time for just wat.
import std.sumtype;
SumType!(int, string, double) anything;
// Absolute heck. Rampaging through the arguments.
foreach (TypeInfo type; _arguments) {
auto data = _argptr;
if (type == typeid(int)) {
anything = va_arg!int(data);
} else if (type == typeid(string)) {
anything = va_arg!string(data);
} else if (type == typeid(double)) {
anything = va_arg!double(data);
}
anything.match!(
(int i) => (() { writeln("int! ", i); })(),
(string s) => writeln("string! ", s),
(double d) { writeln("double! ", d); }
);
}
writeln(_arguments);
return anything.toString;
}
void main() {
parseHeck("hello", "world", 1, 1.0).writeln;
}
1



is the real way