diff --git a/include/rexy/list.tpp b/include/rexy/list.tpp index 68a2cb2..38ed4e4 100644 --- a/include/rexy/list.tpp +++ b/include/rexy/list.tpp @@ -323,18 +323,22 @@ namespace rexy{ { auto current = begin(); size_type i = 0; + if constexpr(std::is_assignable_v){ for(;i < m_size && first != last;++i){ *current++ = *first++; } - } - if(first != last){ - m_size = i; - while(first != last){ - current = ++(insert(current, *first++)); + if(first == last){ + erase(current, end()); } + m_size = i; }else{ - erase(current, end()); + clear(); + current = end(); + } + + while(first != last){ + current = ++(emplace(current, *first++)); } } template