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