[ https://issues.apache.org/jira/browse/STDCXX-334?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Sebor reassigned STDCXX-334: ----------------------------------- Assignee: Farid Zaripov Assigning to Farid -- please close this after adding the test to our regression test suite. > std::list::swap does not swap containers with different allocators correctly > ---------------------------------------------------------------------------- > > Key: STDCXX-334 > URL: https://issues.apache.org/jira/browse/STDCXX-334 > Project: C++ Standard Library > Issue Type: Bug > Components: 23. Containers > Affects Versions: 4.1.3 > Environment: All > Reporter: Farid Zaripov > Assigned To: Farid Zaripov > Fix For: 4.2 > > > The program below fails: > --------------------------------------------- > #include <list> > #include <string> > #include <cassert> > class Alloc : public std::allocator <char> > { > }; > bool operator == (Alloc a1, Alloc a2) > { > return false; > } > bool operator != (Alloc a1, Alloc a2) > { > return true; > } > int main(int argc, char* argv[]) > { > const char src [] = "source string"; > const char dst [] = "destination string"; > typedef std::list <char, Alloc> List; > > Alloc a1; > Alloc a2; > assert (!(a1 == a2)); > List src_lst (src, src + sizeof (src) - 1, a1); > List dst_lst (dst, dst + sizeof (dst) - 1, a2); > src_lst.swap (dst_lst); > assert (std::string (src_lst.begin (), src_lst.end ()) == dst); > assert (std::string (dst_lst.begin (), dst_lst.end ()) == src); > return 0; > } > --------------------------------------------- > Assertion failed: std::string (dst_lst.begin (), dst_lst.end ()) == src, file > swap.cpp, line 37 > This application has requested the Runtime to terminate it in an unusual way. > Please contact the application's support team for more information. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.