KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Given an std::vector<std::unique_ptr<SomeType> > , is it legal to use remove_if on it? In other words, given this code: std::vector<std::unique_ptr<SomeType> > v; // fill v, all entries point to a valid instance of SomeType... v.erase( std::remove_if( v.begin(), v.end(), someCondition ), v.end() ); , am I guaranteed after the erase that all pointers still in v are valid. I know that given the intuitive implementation of std::remove_if , and given all of the implementations I've looked at, they will be. I'd like to know if there is anything in the standard which guarantees it; i.e. that std::remove_if is not allowed to copy any of the valid entries without recopying the copy into its final location. (I am, of course, supposing that the condition doesn't copy. If the condition has a signature like: struct Condition { bool operator()( std::unique_ptr<SomeType> ptr ) const; }; , then of course, all of the pointers will be invalid after remove_if .)
Tags (comma-separated)
Save Edits
Cancel