deque: unneccessary copy constructor in _M_push_front_aux

Gabriel Dos Reis gdr@integrable-solutions.net
Fri Feb 7 09:38:00 GMT 2003


Christoph Schlenker <Christoph.Schlenker@schlund.de> writes:

| Hi all,
| 
| I'm a bit puzzeled about line 1 in the function _M_push_front_aux in 
| 
| template <class _Tp, class _Alloc>
| void
| deque<_Tp,_Alloc>::_M_push_front_aux(const value_type& __t)
| {
| 1  value_type __t_copy = __t;   // *** who needs that copy? ***
| 2  _M_reserve_map_at_front();
| 3  *(_M_start._M_node - 1) = _M_allocate_node();
| 4  try {
| 5    _M_start._M_set_node(_M_start._M_node - 1);
| 6    _M_start._M_cur = _M_start._M_last - 1;
| 7    _Construct(_M_start._M_cur, __t_copy);
| 8  }
| 9  catch(...)
| 0    {
| 1      ++_M_start;
| 2      _M_deallocate_node(*(_M_start._M_node - 1));
| 3      __throw_exception_again;
| 4    }
| }
| 
| Can anyone tell we there is a __t_copy needed? As far as I can see

How would you handle this

  d.push_front(d.back())

?

-- Gaby



More information about the Libstdc++ mailing list