auto toInputRange (T...) (T args) { struct Range { T args; size_t index;
T[0] front () { return args[index]; } void popFront () { ++index; } bool empty () { return index >= args.length; } } return Range(args, 0); }
auto toInputRange (T...) (T args) { struct Range { T args; size_t index;
T[0] front () { return args[index]; } void popFront () { ++index; } bool empty () { return index >= args.length; } } return Range(args, 0); }