xxxxxxxxxx
struct S
{
int[] i;
ref opIndex(size_t index) => i[index];
void opIndexAssign(int value) { i[] = value; }
void opIndexAssign(int value, size_t idx) { i[idx] = value; }
}
void main()
{
auto s = S([1, 2]);
s[] = 2;
assert(s.i == [2, 2]);
s[1] = 42;
assert(s.i == [2, 42]);
s[0]++;
assert(s.i == [3, 42]);
s[0] += 1;
assert(s.i == [4, 42]);
}