From ff74fd1325ef58c09af1b294338321df2f6b97f0 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Mon, 18 May 2009 22:15:56 +0000 Subject: stl_pair.h (swap): Do not swap rvalues. 2009-05-18 Jonathan Wakely * include/bits/stl_pair.h (swap): Do not swap rvalues. * include/bits/stl_deque.h (swap): Likewise. * include/bits/stl_list.h (swap): Likewise. * include/bits/stl_vector.h (swap): Likewise. * include/bits/stl_bvector.h (swap): Likewise. * include/bits/stl_queue.h (swap): Likewise. * include/bits/stl_stack.h (swap): Likewise. * include/bits/stl_tree.h (swap): Likewise. * include/bits/stl_map.h (swap): Likewise. * include/bits/stl_multimap.h (swap): Likewise. * include/bits/stl_set.h (swap): Likewise. * include/bits/stl_multiset.h (swap): Likewise. * include/bits/forward_list.h (swap): Likewise. * include/bits/unique_ptr.h (swap): Likewise. * include/debug/deque (swap): Likewise. * include/debug/list (swap): Likewise. * include/debug/vector (swap): Likewise. * include/debug/map.h (swap): Likewise. * include/debug/multimap.h (swap): Likewise. * include/debug/set.h (swap): Likewise. * include/debug/multiset.h (swap): Likewise. * include/debug/unordered_map (swap): Likewise. * include/debug/unordered_set (swap): Likewise. * include/ext/vstring.h (swap): Likewise. * include/tr1_impl/unordered_map (swap): Likewise. * include/tr1_impl/hashtable (swap): Likewise. * include/tr1_impl/unordered_set (swap): Likewise. * include/std/tuple (swap): Likewise. * include/std/mutex (swap): Likewise. * include/std/thread (swap): Likewise. (operator<<): Only output to lvalue streams. * testsuite/20_util/shared_ptr/modifiers/swap_rvalue.cc: Remove. * testsuite/23_containers/headers/forward_list/synopsis.cc: Adjust. * testsuite/23_containers/deque/requirements/dr438/ assign_neg.cc: Adjust line numbers. * 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/deque/requirements/dr438/ insert_neg.cc: Likewise. * testsuite/23_containers/list/requirements/dr438/ assign_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/23_containers/list/requirements/dr438/ insert_neg.cc: Likewise. * testsuite/23_containers/vector/requirements/dr438/ assign_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/vector/requirements/dr438/ insert_neg.cc: Likewise. * testsuite/30_threads/thread/swap/1.cc: Swap with lvalue and also test non-member swap. * testsuite/30_threads/thread/swap/2.cc: Remove. From-SVN: r147678 --- libstdc++-v3/include/std/mutex | 12 +----------- libstdc++-v3/include/std/thread | 14 +++----------- libstdc++-v3/include/std/tuple | 24 +++++++----------------- 3 files changed, 11 insertions(+), 39 deletions(-) (limited to 'libstdc++-v3/include/std') diff --git a/libstdc++-v3/include/std/mutex b/libstdc++-v3/include/std/mutex index f313ccb..75595a9 100644 --- a/libstdc++-v3/include/std/mutex +++ b/libstdc++-v3/include/std/mutex @@ -555,7 +555,7 @@ namespace std } void - swap(unique_lock&& __u) + swap(unique_lock& __u) { std::swap(_M_device, __u._M_device); std::swap(_M_owns, __u._M_owns); @@ -591,16 +591,6 @@ namespace std swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>& __y) { __x.swap(__y); } - template - inline void - swap(unique_lock<_Mutex>&& __x, unique_lock<_Mutex>& __y) - { __x.swap(__y); } - - template - inline void - swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>&& __y) - { __x.swap(__y); } - template struct __unlock_impl { diff --git a/libstdc++-v3/include/std/thread b/libstdc++-v3/include/std/thread index 8ce9e5c..fbdfe2e 100644 --- a/libstdc++-v3/include/std/thread +++ b/libstdc++-v3/include/std/thread @@ -88,7 +88,7 @@ namespace std template friend basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>&& __out, thread::id __id); + operator<<(basic_ostream<_CharT, _Traits>& __out, thread::id __id); }; // Simple base type that the templatized, derived class containing @@ -149,7 +149,7 @@ namespace std } void - swap(thread&& __t) + swap(thread& __t) { std::swap(_M_id, __t._M_id); } bool @@ -194,14 +194,6 @@ namespace std swap(thread& __x, thread& __y) { __x.swap(__y); } - inline void - swap(thread&& __x, thread& __y) - { __x.swap(__y); } - - inline void - swap(thread& __x, thread&& __y) - { __x.swap(__y); } - inline bool operator!=(thread::id __x, thread::id __y) { return !(__x == __y); } @@ -220,7 +212,7 @@ namespace std template inline basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>&& __out, thread::id __id) + operator<<(basic_ostream<_CharT, _Traits>& __out, thread::id __id) { if (__id == thread::id()) return __out << "thread::id of a non-executing thread"; diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple index c5dbe6b..8dc8dcf 100644 --- a/libstdc++-v3/include/std/tuple +++ b/libstdc++-v3/include/std/tuple @@ -77,7 +77,7 @@ namespace std _Head& _M_head() { return *this; } const _Head& _M_head() const { return *this; } - void _M_swap_impl(_Head&&) { /* no-op */ } + void _M_swap_impl(_Head&) { /* no-op */ } }; template @@ -97,7 +97,7 @@ namespace std const _Head& _M_head() const { return _M_head_impl; } void - _M_swap_impl(_Head&& __h) + _M_swap_impl(_Head& __h) { using std::swap; swap(__h, _M_head_impl); @@ -125,7 +125,7 @@ namespace std struct _Tuple_impl<_Idx> { protected: - void _M_swap_impl(_Tuple_impl&&) { /* no-op */ } + void _M_swap_impl(_Tuple_impl&) { /* no-op */ } }; /** @@ -214,7 +214,7 @@ namespace std protected: void - _M_swap_impl(_Tuple_impl&& __in) + _M_swap_impl(_Tuple_impl& __in) { _Base::_M_swap_impl(__in._M_head()); _Inherited::_M_swap_impl(__in._M_tail()); @@ -292,7 +292,7 @@ namespace std } void - swap(tuple&& __in) + swap(tuple& __in) { _Inherited::_M_swap_impl(__in); } }; @@ -301,7 +301,7 @@ namespace std class tuple<> { public: - void swap(tuple&&) { /* no-op */ } + void swap(tuple&) { /* no-op */ } }; /// tuple (2-element), with construction and assignment from a pair. @@ -394,7 +394,7 @@ namespace std } void - swap(tuple&& __in) + swap(tuple& __in) { using std::swap; swap(this->_M_head(), __in._M_head()); @@ -665,16 +665,6 @@ namespace std swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y) { __x.swap(__y); } - template - inline void - swap(tuple<_Elements...>&& __x, tuple<_Elements...>& __y) - { __x.swap(__y); } - - template - inline void - swap(tuple<_Elements...>& __x, tuple<_Elements...>&& __y) - { __x.swap(__y); } - // A class (and instance) which can be used in 'tie' when an element // of a tuple is not required struct _Swallow_assign -- cgit v1.1