* include/debug/set.h: Protect move assignment operator vs self
assignment.
* include/debug/unordered_map: Likewise.
* include/debug/multiset.h: Likewise.
* include/debug/vector: Likewise.
* include/debug/unordered_set: Likewise.
* include/debug/deque: Likewise.
* include/debug/map.h: Likewise.
* include/debug/list: Likewise.
* include/debug/multimap.h: Likewise.
* include/tr1_impl/unordered_map: Likewise.
* include/tr1_impl/unordered_set: Likewise.
* include/profile/set.h: Likewise.
* include/profile/unordered_map: Likewise.
* include/profile/multiset.h: Likewise.
* include/profile/unordered_set: Likewise.
* include/profile/vector: Likewise.
* include/profile/deque: Likewise.
* include/profile/map.h: Likewise.
* include/profile/list: Likewise.
* include/profile/multimap.h: Likewise.
* include/ext/vstring.h: Likewise.
* include/bits/stl_list.h: Likewise.
* include/bits/stl_map.h: Likewise.
* include/bits/stl_set.h: Likewise.
* include/bits/stl_multimap.h: Likewise.
* include/bits/stl_vector.h: Likewise.
* include/bits/stl_deque.h: Likewise.
* include/bits/stl_multiset.h: Likewise.
* include/ext/vstring.h: Use clear().
* testsuite/ext/vstring/cons/self_move_assign.cc: New.
* testsuite/23_containers/unordered_map/cons/self_move_assign.cc:
Likewise.
* testsuite/23_containers/multimap/cons/self_move_assign.cc: Likewise.
* testsuite/23_containers/set/cons/self_move_assign.cc: Likewise.
* testsuite/23_containers/unordered_multimap/cons/
self_move_assign.cc: Likewise.
* testsuite/23_containers/forward_list/cons/self_move_assign.cc:
Likewise.
* testsuite/23_containers/unordered_set/cons/self_move_assign.cc:
Likewise.
* testsuite/23_containers/vector/cons/self_move_assign.cc: Likewise.
* testsuite/23_containers/deque/cons/self_move_assign.cc: Likewise.
* testsuite/23_containers/multiset/cons/self_move_assign.cc: Likewise.
* testsuite/23_containers/list/cons/self_move_assign.cc: Likewise.
* testsuite/23_containers/unordered_multiset/cons/
self_move_assign.cc: Likewise.
* testsuite/23_containers/map/cons/self_move_assign.cc: Likewise.
* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
Adjust dg-error line numbers.
* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
Likewise.
* testsuite/23_containers/vector/requirements/dr438/
constructor_1_neg.cc: Likewise.
* testsuite/23_containers/vector/requirements/dr438/
constructor_2_neg.cc: Likewise.
* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
Likewise.
* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
Likewise.
* testsuite/23_containers/deque/requirements/dr438/
constructor_1_neg.cc: Likewise.
* testsuite/23_containers/deque/requirements/dr438/
constructor_2_neg.cc: Likewise.
* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
Likewise.
* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
Likewise.
* testsuite/23_containers/list/requirements/dr438/
constructor_1_neg.cc: Likewise.
* testsuite/23_containers/list/requirements/dr438/
constructor_2_neg.cc: Likewise.
* testsuite/ext/vstring/moveable.cc: Move to...
* testsuite/ext/vstring/cons/moveable.cc: ... here.
* testsuite/23_containers/unordered_map/moveable.cc: Move to...
* testsuite/23_containers/unordered_map/cons/moveable.cc ... here.
* testsuite/23_containers/multimap/moveable.cc: Move to...
* testsuite/23_containers/multimap/cons/moveable.cc: ... here.
* testsuite/23_containers/set/moveable.cc: Move to...
* testsuite/23_containers/set/cons/moveable.cc: ... here.
* testsuite/23_containers/unordered_multimap/moveable.cc: Move to...
* testsuite/23_containers/unordered_multimap/cons/moveable.cc:
... here.
* testsuite/23_containers/forward_list/moveable.cc: Move to...
* testsuite/23_containers/forward_list/cons/moveable.cc: ... here.
* testsuite/23_containers/unordered_set/moveable.cc Move to...
* testsuite/23_containers/unordered_set/moveable.cc: ... here.
* testsuite/23_containers/vector/cons/moveable.cc Move to...
* testsuite/23_containers/vector/cons/moveable2.cc: ... this.
* testsuite/23_containers/deque/cons/moveable.cc Move to...
* testsuite/23_containers/deque/cons/moveable2.cc: ... this.
* testsuite/23_containers/multiset/moveable.cc Move to...
* testsuite/23_containers/multiset/cons/moveable.cc: ... here.
* testsuite/23_containers/list/moveable.h Move to...
* testsuite/23_containers/list/cons/moveable.h: ... here.
* testsuite/23_containers/list/moveable.cc Move to...
* testsuite/23_containers/list/cons/moveable.cc: ... here.
* testsuite/23_containers/unordered_multiset/moveable.cc Move to...
* testsuite/23_containers/unordered_multiset/cons/moveable.cc:
... here.
* testsuite/23_containers/map/moveable.cc Move to...
* testsuite/23_containers/map/cons/moveable.cc: ... here.
* testsuite/23_containers/vector/moveable.cc: Move to...
* testsuite/23_containers/vector/cons/moveable.cc: ... here.
* testsuite/23_containers/deque/moveable.cc: Move to...
* testsuite/23_containers/deque/cons/moveable.cc: ... here.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@155754
138bc75d-0d04-0410-961f-
82ee72b054a4
2010-01-08 Paolo Carlini <paolo.carlini@oracle.com>
+ * include/debug/set.h: Protect move assignment operator vs self
+ assignment.
+ * include/debug/unordered_map: Likewise.
+ * include/debug/multiset.h: Likewise.
+ * include/debug/vector: Likewise.
+ * include/debug/unordered_set: Likewise.
+ * include/debug/deque: Likewise.
+ * include/debug/map.h: Likewise.
+ * include/debug/list: Likewise.
+ * include/debug/multimap.h: Likewise.
+ * include/tr1_impl/unordered_map: Likewise.
+ * include/tr1_impl/unordered_set: Likewise.
+ * include/profile/set.h: Likewise.
+ * include/profile/unordered_map: Likewise.
+ * include/profile/multiset.h: Likewise.
+ * include/profile/unordered_set: Likewise.
+ * include/profile/vector: Likewise.
+ * include/profile/deque: Likewise.
+ * include/profile/map.h: Likewise.
+ * include/profile/list: Likewise.
+ * include/profile/multimap.h: Likewise.
+ * include/ext/vstring.h: Likewise.
+ * include/bits/stl_list.h: Likewise.
+ * include/bits/stl_map.h: Likewise.
+ * include/bits/stl_set.h: Likewise.
+ * include/bits/stl_multimap.h: Likewise.
+ * include/bits/stl_vector.h: Likewise.
+ * include/bits/stl_deque.h: Likewise.
+ * include/bits/stl_multiset.h: Likewise.
+ * include/ext/vstring.h: Use clear().
+ * testsuite/ext/vstring/cons/self_move_assign.cc: New.
+ * testsuite/23_containers/unordered_map/cons/self_move_assign.cc:
+ Likewise.
+ * testsuite/23_containers/multimap/cons/self_move_assign.cc: Likewise.
+ * testsuite/23_containers/set/cons/self_move_assign.cc: Likewise.
+ * testsuite/23_containers/unordered_multimap/cons/
+ self_move_assign.cc: Likewise.
+ * testsuite/23_containers/forward_list/cons/self_move_assign.cc:
+ Likewise.
+ * testsuite/23_containers/unordered_set/cons/self_move_assign.cc:
+ Likewise.
+ * testsuite/23_containers/vector/cons/self_move_assign.cc: Likewise.
+ * testsuite/23_containers/deque/cons/self_move_assign.cc: Likewise.
+ * testsuite/23_containers/multiset/cons/self_move_assign.cc: Likewise.
+ * testsuite/23_containers/list/cons/self_move_assign.cc: Likewise.
+ * testsuite/23_containers/unordered_multiset/cons/
+ self_move_assign.cc: Likewise.
+ * testsuite/23_containers/map/cons/self_move_assign.cc: Likewise.
+
+ * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+ Adjust dg-error line numbers.
+ * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+ Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+ * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+ Likewise.
+ * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+ Likewise.
+ * testsuite/23_containers/deque/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/deque/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+ * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+ Likewise.
+ * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+ Likewise.
+ * testsuite/23_containers/list/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/list/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+
+ * testsuite/ext/vstring/moveable.cc: Move to...
+ * testsuite/ext/vstring/cons/moveable.cc: ... here.
+ * testsuite/23_containers/unordered_map/moveable.cc: Move to...
+ * testsuite/23_containers/unordered_map/cons/moveable.cc ... here.
+ * testsuite/23_containers/multimap/moveable.cc: Move to...
+ * testsuite/23_containers/multimap/cons/moveable.cc: ... here.
+ * testsuite/23_containers/set/moveable.cc: Move to...
+ * testsuite/23_containers/set/cons/moveable.cc: ... here.
+ * testsuite/23_containers/unordered_multimap/moveable.cc: Move to...
+ * testsuite/23_containers/unordered_multimap/cons/moveable.cc:
+ ... here.
+ * testsuite/23_containers/forward_list/moveable.cc: Move to...
+ * testsuite/23_containers/forward_list/cons/moveable.cc: ... here.
+ * testsuite/23_containers/unordered_set/moveable.cc Move to...
+ * testsuite/23_containers/unordered_set/moveable.cc: ... here.
+ * testsuite/23_containers/vector/cons/moveable.cc Move to...
+ * testsuite/23_containers/vector/cons/moveable2.cc: ... this.
+ * testsuite/23_containers/deque/cons/moveable.cc Move to...
+ * testsuite/23_containers/deque/cons/moveable2.cc: ... this.
+ * testsuite/23_containers/multiset/moveable.cc Move to...
+ * testsuite/23_containers/multiset/cons/moveable.cc: ... here.
+ * testsuite/23_containers/list/moveable.h Move to...
+ * testsuite/23_containers/list/cons/moveable.h: ... here.
+ * testsuite/23_containers/list/moveable.cc Move to...
+ * testsuite/23_containers/list/cons/moveable.cc: ... here.
+ * testsuite/23_containers/unordered_multiset/moveable.cc Move to...
+ * testsuite/23_containers/unordered_multiset/cons/moveable.cc:
+ ... here.
+ * testsuite/23_containers/map/moveable.cc Move to...
+ * testsuite/23_containers/map/cons/moveable.cc: ... here.
+ * testsuite/23_containers/vector/moveable.cc: Move to...
+ * testsuite/23_containers/vector/cons/moveable.cc: ... here.
+ * testsuite/23_containers/deque/moveable.cc: Move to...
+ * testsuite/23_containers/deque/cons/moveable.cc: ... here.
+
+2010-01-08 Paolo Carlini <paolo.carlini@oracle.com>
+
PR libstdc++/42573
* include/bits/allocator.h (struct __shrink_to_fit): Add.
* include/bits/stl_deque.h (deque<>::shrink_to_fit): Add.
deque&
operator=(deque&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
// List implementation -*- C++ -*-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
list&
operator=(list&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
// Map implementation -*- C++ -*-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
map&
operator=(map&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
// Multimap implementation -*- C++ -*-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
multimap&
operator=(multimap&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
// Multiset implementation -*- C++ -*-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
multiset&
operator=(multiset&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
// Set implementation -*- C++ -*-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
set&
operator=(set&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
vector&
operator=(vector&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
deque&
operator=(deque&& __x)
{
- // NB: DR 675.
- clear();
- swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ clear();
+ swap(__x);
+ }
return *this;
}
list&
operator=(list&& __x)
{
- // NB: DR 675.
- clear();
- swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ clear();
+ swap(__x);
+ }
return *this;
}
map&
operator=(map&& __x)
{
- // NB: DR 675.
- clear();
- swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ clear();
+ swap(__x);
+ }
return *this;
}
multimap&
operator=(multimap&& __x)
{
- // NB: DR 675.
- clear();
- swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ clear();
+ swap(__x);
+ }
return *this;
}
multiset&
operator=(multiset&& __x)
{
- // NB: DR 675.
- clear();
- swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ clear();
+ swap(__x);
+ }
return *this;
}
set&
operator=(set&& __x)
{
- // NB: DR 675.
- clear();
- swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ clear();
+ swap(__x);
+ }
return *this;
}
// Debugging unordered_map/unordered_multimap implementation -*- C++ -*-
-// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
unordered_map&
operator=(unordered_map&& __x)
{
- // NB: DR 675.
- clear();
- swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ clear();
+ swap(__x);
+ }
return *this;
}
unordered_multimap&
operator=(unordered_multimap&& __x)
{
- // NB: DR 675.
- clear();
- swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ clear();
+ swap(__x);
+ }
return *this;
}
// Debugging unordered_set/unordered_multiset implementation -*- C++ -*-
-// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
unordered_set&
operator=(unordered_set&& __x)
{
- // NB: DR 675.
- clear();
- swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ clear();
+ swap(__x);
+ }
return *this;
}
vector&
operator=(vector&& __x)
{
- // NB: DR 675.
- clear();
- swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ clear();
+ swap(__x);
+ }
return *this;
}
operator=(__versa_string&& __str)
{
if (this != &__str)
- this->swap(__str);
+ {
+ this->clear();
+ this->swap(__str);
+ }
return *this;
}
deque&
operator=(deque&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
list&
operator=(list&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
map&
operator=(map&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
// Profiling multimap implementation -*- C++ -*-
-// Copyright (C) 2009 Free Software Foundation, Inc.
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
multimap&
operator=(multimap&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
multiset&
operator=(multiset&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
set&
operator=(set&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
unordered_map&
operator=(unordered_map&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
unordered_multimap&
operator=(unordered_multimap&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
unordered_set&
operator=(unordered_set&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
unordered_multiset&
operator=(unordered_multiset&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
vector&
operator=(vector&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
unordered_map&
operator=(unordered_map&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
unordered_multimap&
operator=(unordered_multimap&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
// TR1 unordered_set -*- C++ -*-
-// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
unordered_set&
operator=(unordered_set&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
unordered_multiset&
operator=(unordered_multiset&& __x)
{
- // NB: DR 675.
- this->clear();
- this->swap(__x);
+ if (this != &__x)
+ {
+ // NB: DR 675.
+ this->clear();
+ this->swap(__x);
+ }
return *this;
}
-// { dg-do compile }
// { dg-options "-std=gnu++0x" }
// Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
// <http://www.gnu.org/licenses/>.
-#include <deque>
-#include <iterator>
-#include <testsuite_iterators.h>
-#include <testsuite_rvalref.h>
-
-using namespace __gnu_test;
-typedef std::deque<rvalstruct> test_type;
-
-// Empty constructor doesn't require a copy constructor
-void
-test01()
-{ test_type d; }
-
-// Constructing from a range that returns rvalue references doesn't
-// require a copy constructor.
-void
-test02(rvalstruct* begin, rvalstruct* end)
-{
- test_type d(std::make_move_iterator(begin), std::make_move_iterator(end));
-}
+// NOTE: This makes use of the fact that we know how moveable
+// is implemented on deque (via swap). If the implementation changed
+// this test may begin to fail.
-// Constructing from a input iterator range that returns rvalue
-// references doesn't require a copy constructor either.
-void
-test03(input_iterator_wrapper<rvalstruct> begin,
- input_iterator_wrapper<rvalstruct> end)
-{
- test_type d(std::make_move_iterator(begin), std::make_move_iterator(end));
+#include <deque>
+#include <utility>
+#include <testsuite_hooks.h>
+
+int main()
+{
+ bool test __attribute__((unused)) = true;
+
+ std::deque<int> a,b;
+ a.push_back(1);
+ b = std::move(a);
+ VERIFY( b.size() == 1 && b[0] == 1 && a.size() == 0 );
+
+ std::deque<int> c(std::move(b));
+ VERIFY( c.size() == 1 && c[0] == 1 );
+ VERIFY( b.size() == 0 );
+ return 0;
}
-
-// Neither does destroying one.
-void
-test04(test_type* d)
-{ delete d; }
--- /dev/null
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+
+#include <deque>
+#include <iterator>
+#include <testsuite_iterators.h>
+#include <testsuite_rvalref.h>
+
+using namespace __gnu_test;
+typedef std::deque<rvalstruct> test_type;
+
+// Empty constructor doesn't require a copy constructor
+void
+test01()
+{ test_type d; }
+
+// Constructing from a range that returns rvalue references doesn't
+// require a copy constructor.
+void
+test02(rvalstruct* begin, rvalstruct* end)
+{
+ test_type d(std::make_move_iterator(begin), std::make_move_iterator(end));
+}
+
+// Constructing from a input iterator range that returns rvalue
+// references doesn't require a copy constructor either.
+void
+test03(input_iterator_wrapper<rvalstruct> begin,
+ input_iterator_wrapper<rvalstruct> end)
+{
+ test_type d(std::make_move_iterator(begin), std::make_move_iterator(end));
+}
+
+// Neither does destroying one.
+void
+test04(test_type* d)
+{ delete d; }
--- /dev/null
+// { dg-options "-std=gnu++0x" }
+
+// 2010-01-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <deque>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ std::deque<int> d0(10, 1);
+ const std::deque<int> d1(d0);
+ d0 = std::move(d0);
+ VERIFY( d0.size() == 10 );
+ VERIFY( d0 == d1 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1575 }
+// { dg-error "no matching" "" { target *-*-* } 1578 }
// { dg-excess-errors "" }
#include <deque>
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1514 }
+// { dg-error "no matching" "" { target *-*-* } 1517 }
// { dg-excess-errors "" }
#include <deque>
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1514 }
+// { dg-error "no matching" "" { target *-*-* } 1517 }
// { dg-excess-errors "" }
#include <deque>
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1659 }
+// { dg-error "no matching" "" { target *-*-* } 1662 }
// { dg-excess-errors "" }
#include <deque>
// { dg-options "-std=gnu++0x" }
-// Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
+// 2010-01-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-
-// NOTE: This makes use of the fact that we know how moveable
-// is implemented on deque (via swap). If the implementation changed
-// this test may begin to fail.
-
-#include <deque>
-#include <utility>
+#include <forward_list>
#include <testsuite_hooks.h>
-int main()
+void test01()
{
bool test __attribute__((unused)) = true;
- std::deque<int> a,b;
- a.push_back(1);
- b = std::move(a);
- VERIFY( b.size() == 1 && b[0] == 1 && a.size() == 0 );
+ std::forward_list<int> fl0(10, 1);
+ const std::forward_list<int> fl1(fl0);
+ fl0 = std::move(fl0);
+ // VERIFY( fl0.size() == 10 );
+ VERIFY( fl0 == fl1 );
+}
- std::deque<int> c(std::move(b));
- VERIFY( c.size() == 1 && c[0] == 1 );
- VERIFY( b.size() == 0 );
+int main()
+{
+ test01();
return 0;
}
--- /dev/null
+// { dg-options "-std=gnu++0x" }
+
+// 2010-01-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <list>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ std::list<int> l0(10, 1);
+ const std::list<int> l1(l0);
+ l0 = std::move(l0);
+ VERIFY( l0.size() == 10 );
+ VERIFY( l0 == l1 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
-// Copyright (C) 2007, 2008, 2009 Free Software Foundation
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1409 }
+// { dg-error "no matching" "" { target *-*-* } 1412 }
// { dg-excess-errors "" }
#include <list>
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1378 }
+// { dg-error "no matching" "" { target *-*-* } 1381 }
// { dg-excess-errors "" }
#include <list>
// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
-// Copyright (C) 2007, 2008, 2009 Free Software Foundation
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1378 }
+// { dg-error "no matching" "" { target *-*-* } 1381 }
// { dg-excess-errors "" }
#include <list>
// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
-// Copyright (C) 2007, 2008, 2009 Free Software Foundation
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1378 }
+// { dg-error "no matching" "" { target *-*-* } 1381 }
// { dg-excess-errors "" }
#include <list>
--- /dev/null
+// { dg-options "-std=gnu++0x" }
+
+// 2010-01-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <map>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ typedef std::map<int, int> map_type;
+ typedef map_type::value_type value_type;
+
+ map_type m0{ value_type(1, 1), value_type(2, 2), value_type(3, 3) };
+
+ const map_type m1(m0);
+ m0 = std::move(m0);
+ VERIFY( m0.size() == 3 );
+ VERIFY( m0 == m1 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
--- /dev/null
+// { dg-options "-std=gnu++0x" }
+
+// 2010-01-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <map>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ typedef std::multimap<int, int> mmap_type;
+ typedef mmap_type::value_type value_type;
+
+ mmap_type mm0{ value_type(1, 1), value_type(2, 2), value_type(3, 3) };
+
+ const mmap_type mm1(mm0);
+ mm0 = std::move(mm0);
+ VERIFY( mm0.size() == 3 );
+ VERIFY( mm0 == mm1 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
--- /dev/null
+// { dg-options "-std=gnu++0x" }
+
+// 2010-01-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <set>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ typedef std::multiset<int> mset_type;
+
+ mset_type ms0{ 1, 2, 3 };
+
+ const mset_type ms1(ms0);
+ ms0 = std::move(ms0);
+ VERIFY( ms0.size() == 3 );
+ VERIFY( ms0 == ms1 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
--- /dev/null
+// { dg-options "-std=gnu++0x" }
+
+// 2010-01-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <set>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ typedef std::set<int> set_type;
+
+ set_type s0{ 1, 2, 3 };
+
+ const set_type s1(s0);
+ s0 = std::move(s0);
+ VERIFY( s0.size() == 3 );
+ VERIFY( s0 == s1 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
--- /dev/null
+// { dg-options "-std=gnu++0x" }
+
+// 2010-01-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <unordered_map>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ typedef std::unordered_map<int, int> umap_type;
+ typedef umap_type::value_type value_type;
+
+ umap_type um0{ value_type(1, 1), value_type(2, 2), value_type(3, 3) };
+
+ const umap_type um1(um0);
+ um0 = std::move(um0);
+ VERIFY( um0.size() == 3 );
+ // VERIFY( um0 == um1 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
--- /dev/null
+// { dg-options "-std=gnu++0x" }
+
+// 2010-01-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <unordered_map>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ typedef std::unordered_multimap<int, int> ummap_type;
+ typedef ummap_type::value_type value_type;
+
+ ummap_type umm0{ value_type(1, 1), value_type(2, 2), value_type(3, 3) };
+
+ const ummap_type umm1(umm0);
+ umm0 = std::move(umm0);
+ VERIFY( umm0.size() == 3 );
+ // VERIFY( umm0 == umm1 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
--- /dev/null
+// { dg-options "-std=gnu++0x" }
+
+// 2010-01-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <unordered_set>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ typedef std::unordered_multiset<int> umset_type;
+
+ umset_type ums0{ 1, 2, 3 };
+
+ const umset_type ums1(ums0);
+ ums0 = std::move(ums0);
+ VERIFY( ums0.size() == 3 );
+ // VERIFY( ums0 == ums1 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
--- /dev/null
+// { dg-options "-std=gnu++0x" }
+
+// 2010-01-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <unordered_set>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ typedef std::unordered_set<int> uset_type;
+
+ uset_type us0{ 1, 2, 3 };
+
+ const uset_type us1(us0);
+ us0 = std::move(us0);
+ VERIFY( us0.size() == 3 );
+ // VERIFY( us0 == us1 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
-// { dg-do compile }
// { dg-options "-std=gnu++0x" }
// Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
// <http://www.gnu.org/licenses/>.
+// NOTE: This makes use of the fact that we know how moveable
+// is implemented on vector (via swap). If the implementation changed
+// this test may begin to fail.
+
#include <vector>
-#include <iterator>
-#include <testsuite_iterators.h>
-#include <testsuite_rvalref.h>
-
-using namespace __gnu_test;
-typedef std::vector<rvalstruct> test_type;
-
-// Empty constructor doesn't require a copy constructor
-void
-test01()
-{ test_type d; }
-
-// Constructing from a range that returns rvalue references doesn't
-// require a copy constructor.
-void
-test02(rvalstruct* begin, rvalstruct* end)
-{
- test_type d(std::make_move_iterator(begin), std::make_move_iterator(end));
+#include <utility>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ std::vector<int> a,b;
+ a.push_back(1);
+ b = std::move(a);
+ VERIFY( b.size() == 1 && b[0] == 1 && a.size() == 0 );
+
+ std::vector<int> c(std::move(b));
+ VERIFY( c.size() == 1 && c[0] == 1 );
+ VERIFY( b.size() == 0 );
}
-// Constructing from a input iterator range that returns rvalue
-// references doesn't require a copy constructor either.
-void
-test03(input_iterator_wrapper<rvalstruct> begin,
- input_iterator_wrapper<rvalstruct> end)
-{
- test_type d(std::make_move_iterator(begin), std::make_move_iterator(end));
+void test02()
+{
+ bool test __attribute__((unused)) = true;
+
+ std::vector<bool> a,b;
+ a.push_back(1);
+ b = std::move(a);
+ VERIFY( b.size() == 1 && b[0] == 1 && a.size() == 0 );
+
+ std::vector<bool> c(std::move(b));
+ VERIFY( c.size() == 1 && c[0] == 1 );
+ VERIFY( b.size() == 0 );
}
-// Neither does destroying one.
-void
-test04(test_type* d)
-{ delete d; }
+int main(void)
+{
+ test01();
+ test02();
+ return 0;
+}
--- /dev/null
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+
+#include <vector>
+#include <iterator>
+#include <testsuite_iterators.h>
+#include <testsuite_rvalref.h>
+
+using namespace __gnu_test;
+typedef std::vector<rvalstruct> test_type;
+
+// Empty constructor doesn't require a copy constructor
+void
+test01()
+{ test_type d; }
+
+// Constructing from a range that returns rvalue references doesn't
+// require a copy constructor.
+void
+test02(rvalstruct* begin, rvalstruct* end)
+{
+ test_type d(std::make_move_iterator(begin), std::make_move_iterator(end));
+}
+
+// Constructing from a input iterator range that returns rvalue
+// references doesn't require a copy constructor either.
+void
+test03(input_iterator_wrapper<rvalstruct> begin,
+ input_iterator_wrapper<rvalstruct> end)
+{
+ test_type d(std::make_move_iterator(begin), std::make_move_iterator(end));
+}
+
+// Neither does destroying one.
+void
+test04(test_type* d)
+{ delete d; }
--- /dev/null
+// { dg-options "-std=gnu++0x" }
+
+// 2010-01-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <vector>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ std::vector<int> v0(10, 1);
+ const std::vector<int> v1(v0);
+ v0 = std::move(v0);
+ VERIFY( v0.size() == 10 );
+ VERIFY( v0 == v1 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
+++ /dev/null
-// { dg-options "-std=gnu++0x" }
-
-// Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING3. If not see
-// <http://www.gnu.org/licenses/>.
-
-
-// NOTE: This makes use of the fact that we know how moveable
-// is implemented on vector (via swap). If the implementation changed
-// this test may begin to fail.
-
-#include <vector>
-#include <utility>
-#include <testsuite_hooks.h>
-
-void test01()
-{
- bool test __attribute__((unused)) = true;
-
- std::vector<int> a,b;
- a.push_back(1);
- b = std::move(a);
- VERIFY( b.size() == 1 && b[0] == 1 && a.size() == 0 );
-
- std::vector<int> c(std::move(b));
- VERIFY( c.size() == 1 && c[0] == 1 );
- VERIFY( b.size() == 0 );
-}
-
-void test02()
-{
- bool test __attribute__((unused)) = true;
-
- std::vector<bool> a,b;
- a.push_back(1);
- b = std::move(a);
- VERIFY( b.size() == 1 && b[0] == 1 && a.size() == 0 );
-
- std::vector<bool> c(std::move(b));
- VERIFY( c.size() == 1 && c[0] == 1 );
- VERIFY( b.size() == 0 );
-}
-
-int main(void)
-{
- test01();
- test02();
- return 0;
-}
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1054 }
+// { dg-error "no matching" "" { target *-*-* } 1057 }
// { dg-excess-errors "" }
#include <vector>
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 994 }
+// { dg-error "no matching" "" { target *-*-* } 997 }
// { dg-excess-errors "" }
#include <vector>
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 994 }
+// { dg-error "no matching" "" { target *-*-* } 997 }
// { dg-excess-errors "" }
#include <vector>
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1095 }
+// { dg-error "no matching" "" { target *-*-* } 1098 }
// { dg-excess-errors "" }
#include <vector>
--- /dev/null
+// { dg-options "-std=gnu++0x" }
+// { dg-require-string-conversions "" }
+
+// 2010-01-08 Paolo Carlini <paolo.carlini@oracle.com>
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <ext/vstring.h>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ __gnu_cxx::__vstring vs0(10, 'a');
+ const __gnu_cxx::__vstring vs1(vs0);
+ vs0 = std::move(vs0);
+ VERIFY( vs0.size() == 10 );
+ VERIFY( vs0 == vs1 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}