import std.range : empty, popFront, front;
auto destr(Arg0, Args...)(ref Arg0 arg0, ref Args args)
return DestrInstance!(Arg0, Args.length+1)(arg0, args);
private struct DestrInstance(T, size_t N)
this(Args...)(ref T arg0, ref Args args)
foreach(i, ref arg; args) {
void opAssign(rhs_t)(rhs_t rhs)
for (size_t i = 0; !rhs.empty && i < N; rhs.popFront(), ++i) {
destr(a,b,c) = ["foo1","foo2","foo3","foo4"];
assert([a,b,c] == ["foo1", "foo2", "foo3"]);
destr(a,b,c) = ["bar1","bar2"];
assert([a,b,c] == ["bar1", "bar2", "foo3"]);
import std.stdio : writeln;
destr(a,b,c) = ["foo1","foo2","foo3","foo4"];
destr(a,b,c) = ["bar1","bar2"];