The reason I don't use an integer index is that I move several items at the same time. If I was just moving one single item, I could use the index - the panes and item lists would be rebuilt.

Not sure if returning the result of the erase, since the remove_item function would be very specific returning an iterator.. Maybe I'll just bake this into the code?