The function which emits the error is
T moveAt(size_t i)
{
i += _a;
enforce(i < _b && !empty);
return move(_outer._data._payload[_a + i]); // <---
}
That line should really read
return move(_outer._data._payload[i]);
Comment #2 by andrei — 2011-03-28T12:11:43Z
Thanks Jonathan for reporting and Kenny for finding this bug.