- 
    
Task
 - 
    Resolution: Unresolved
 - 
    
P2: Important
 - 
    None
 - 
    None
 - 
    None
 
After we've detected that we need to change the container in insert(), don't detach(). Instead, check if we're shared. If we're not shared, do the change in-place. Otherwise, make a new container, copy the subset that forms the final result over, then assign the new container to *this.
See epic for more details.
Acceptance criteria: The following member functions no longer detach:
- emplace*() (all variants)
 - insert() (all overloads)