Call the destructor on each of the elements of a deque of parameterized VALUE_TYPE in the specified range [first .. last)]. Shift the elements to fill up the empty space after the erasure, using the smaller of the range defined by [fromBegin .. first)] and [last .. fromEnd)] after the erasure. Load in the specified toBegin and toEnd the new boundaries of the deque after erasure and return an iterator pointing to the element immediately following the removed elements. The behavior is undefined unless fromBegin <= first <= last <= fromEnd.