V!T v(T)(T[] values...) { return V!T(values); }
this(T[] values...) { this.values = values; }
typeof(mixin("T.init ", op, " typeof(S.init[0]).init"))[] opBinary(string op, S)(return scope S rhs) return
in (rhs.length == values.length)
auto result = new typeof(return)(values.length);
foreach (i, ref x; result)
x = mixin("values[i] ", op, " rhs[i]");
typeof(mixin("typeof(S.init[0]).init ", op, " T.init"))[] opBinaryRight(string op, S)(return scope S lhs) return
in (lhs.length == values.length)
auto result = new typeof(return)(values.length);
foreach (i, ref x; result)
x = mixin("lhs[i] ", op, " values[i]");
auto a = [1,2,3].v + [4,5,6];
static assert(is(typeof(a) == int[]));
enum as = ["a": 1, "b": 3];
enum bs = ["a": 3, "c": 2];
auto ps = ["a", "b"].v in [ as, bs ];
static assert(is(typeof(ps) == int*[]));
assert(ps[0] !is null && *ps[0] == 1);
auto b = ['a', 'B', '3'] ~ ["bc", "CDE", "4567"].v;
static assert(is(typeof(b) == string[]));
assert(b == ["abc", "BCDE", "34567" ]);