10 typename std::vector<T>::iterator
erase(
typename std::vector<T>::iterator it ) {
12 if ( it < this->begin() || it > this->end() )
13 {
throw std::runtime_error(
"list::erase: iterator out of range" ); }
15 if ( it == this->end() - 1 )
17 std::vector<T>::pop_back();
21 T lastElem = std::move( this->back() );
22 std::vector<T>::pop_back();
24 *it = std::move( lastElem );
29 typename std::vector<T>::iterator
erase(
typename std::vector<T>::const_iterator it ) {
31 if ( it < this->begin() || it > this->end() )
32 {
throw std::runtime_error(
"list::erase: iterator out of range" ); }
34 if ( it == this->end() - 1 )
36 std::vector<T>::pop_back();
40 T lastElem = std::move( this->back() );
41 std::vector<T>::pop_back();
43 *it = std::move( lastElem );