--- include/c++/4.6.2/bits/stl_tempbuf.h.orig 2011-12-11 11:16:12.421875000 +0100 +++ include/c++/4.6.2/bits/stl_tempbuf.h 2011-12-11 11:16:08.953125000 +0100 @@ -254,8 +254,13 @@ _M_buffer = __p.first; _M_len = __p.second; if(_M_buffer) - std::__uninitialized_construct_buf(_M_buffer, _M_buffer + _M_len, - *__first); + { + typedef typename iterator_traits<_ForwardIterator>::reference + _ReferenceType; + _ReferenceType __value (*__first); + std::__uninitialized_construct_buf(_M_buffer, _M_buffer + _M_len, + __value); + } } __catch(...) {