This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
/* gcc -Wall -Wextra -std=c++11 copy_n_vs_copy.cpp -lstdc++ -o copy_n_vs_copy One Past the End https://gcc.gnu.org/onlinedocs/libstdc++/manual/iterators.html#iterators.predefined.end BUG location: /usr/lib/gcc/x86_64-pc-linux-gnu/5.1.0/include/g++-v5/bits/stl_algo.h */ #include <assert.h> #include <iostream> #include <sstream> #include <algorithm> int main() { std::string i("abc"); std::string o; std::istringstream t; t=std::istringstream(i); o.clear(); assert(3==t.rdbuf()->in_avail()); std::copy(std::istreambuf_iterator<char>(t.rdbuf()), std::istreambuf_iterator<char>(),back_inserter(o)); std::cout<<"Test1(copy):\tResult_size:"<<o.size()<<"\tResult:\""<<o <<"\"\tin_avail:"<<t.rdbuf()->in_avail()<<std::endl; assert(0==t.rdbuf()->in_avail()); /* OK! */ t=std::istringstream(i); o.clear(); assert(3==t.rdbuf()->in_avail()); std::copy_n(std::istreambuf_iterator<char>(t.rdbuf()), 3,back_inserter(o)); std::cout<<"Test2(copy_n):\tResult_size:"<<o.size()<<"\tResult:\""<<o <<"\"\tin_avail:"<<t.rdbuf()->in_avail()<<std::endl; assert(1==t.rdbuf()->in_avail()); /* WHY? */ return(0); } /* Test1(copy): Result_size:3 Result:"abc" in_avail:0 Test2(copy_n): Result_size:3 Result:"abc" in_avail:1 */
Attachment:
stl_algo.h.patch.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |