https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63993

            Bug ID: 63993
           Summary: vector::insert( make_move_iterator... ) broken by
                    GLIBCXX_DEBUG.
           Product: gcc
           Version: 4.9.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pluto at agmk dot net

#include <iterator>
#include <string>
#include <vector>

int main()
{
    std::vector< std::string > v, t;
    t.push_back( "hello" );
    v.insert( v.end(), std::make_move_iterator( t.begin() ),
std::make_move_iterator( t.end() ) );
    t.clear();
}

% LANG=C
~/dvm/master/toolchain/gcc/sysroot/x86_64-gnu-linux/bin/x86_64-gnu-linux-g++
-Wall gcc-bug-new.cpp -std=c++11 -D_GLIBCXX_DEBUG=1


(...)
gcc-bug-new.cpp:9:97:   required from here
/home/pawels/dvm/master/toolchain/gcc/sysroot/x86_64-gnu-linux/x86_64-gnu-linux/include/c++/4.9.2/debug/functions.h:220:69:
error: invalid initialization of non-const reference of type
'std::__7::basic_string<char>&' from an rvalue of type
'std::__7::move_iterator<__gnu_debug::_Safe_iterator<__gnu_cxx::__7::__normal_iterator<std::__7::basic_string<char>*,
std::__cxx1998::__7::vector<std::__7::basic_string<char>,
std::__7::allocator<std::__7::basic_string<char> > > >,
std::__debug::vector<std::__7::basic_string<char> > > >::value_type {aka
std::__7::basic_string<char>}'
       return __foreign_iterator_aux4(__it, std::__addressof(*__other));
                                                                     ^
In file included from
/home/pawels/dvm/master/toolchain/gcc/sysroot/x86_64-gnu-linux/x86_64-gnu-linux/include/c++/4.9.2/debug/functions.h:36:0,
                 from
/home/pawels/dvm/master/toolchain/gcc/sysroot/x86_64-gnu-linux/x86_64-gnu-linux/include/c++/4.9.2/debug/debug.h:127,
                 from
/home/pawels/dvm/master/toolchain/gcc/sysroot/x86_64-gnu-linux/x86_64-gnu-linux/include/c++/4.9.2/bits/stl_iterator_base_funcs.h:65,
                 from
/home/pawels/dvm/master/toolchain/gcc/sysroot/x86_64-gnu-linux/x86_64-gnu-linux/include/c++/4.9.2/iterator:62,
                 from gcc-bug-new.cpp:1:
/home/pawels/dvm/master/toolchain/gcc/sysroot/x86_64-gnu-linux/x86_64-gnu-linux/include/c++/4.9.2/bits/move.h:47:5:
note: in passing argument 1 of '_Tp* std::__7::__addressof(_Tp&) [with _Tp =
std::__7::basic_string<char>]'
     __addressof(_Tp& __r) _GLIBCXX_NOEXCEPT
     ^

Reply via email to