aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/ext/rc_string_base.h
diff options
context:
space:
mode:
authorPaolo Carlini <paolo@gcc.gnu.org>2006-01-04 11:34:45 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2006-01-04 11:34:45 +0000
commitf7ace77f1f4a713c2e96b4daf6181216b5df29d9 (patch)
treecd3bddece803156966caae41da6fe7437f45b8f1 /libstdc++-v3/include/ext/rc_string_base.h
parentdb5d99e8b1c97aac22051f5dfd9296283e0d9848 (diff)
downloadgcc-f7ace77f1f4a713c2e96b4daf6181216b5df29d9.zip
gcc-f7ace77f1f4a713c2e96b4daf6181216b5df29d9.tar.gz
gcc-f7ace77f1f4a713c2e96b4daf6181216b5df29d9.tar.bz2
sso_string_base.h (__sso_string_base<>::_M_dataplus): Use _CharT_alloc_type as base class.
2006-01-04 Paolo Carlini <pcarlini@suse.de> * include/ext/sso_string_base.h (__sso_string_base<>::_M_dataplus): Use _CharT_alloc_type as base class. (_M_get_allocator, _M_swap, _M_create, _M_destroy): Adjust. * include/ext/vstring.h (get_allocator): Tidy. 2006-01-04 Paolo Carlini <pcarlini@suse.de> Implement Option 3 of DR 431 for all the containers. * include/bits/allocator.h (struct __alloc_swap): Add, swaps allocators, optimized to nothing in case they are empty. * include/bits/stl_deque.h (deque<>::swap): Use it. * include/bits/stl_list.h (list<>::swap): Likewise. * include/bits/stl_tree.h (_Rb_tree<>::swap): Likewise. * include/bits/stl_vector.h (vector<>::swap): Likewise. * include/tr1/hashtable (hashtable<>::swap): Likewise. * include/ext/rc_string_base.h (__rc_string_base<>::_M_swap): Likewise. * include/ext/sso_string_base.h (__sso_string_base<>::_M_swap): Likewise. * include/ext/vstring_util.h (__vstring_utility<>::_Alloc_hider): Clean-up (now vstring uses the generic __alloc_swap facility). * include/tr1/unordered_map: Adjust includes. * include/tr1/unordered_set: Likewise. * docs/html/ext/howto.html: Add an entry for DR 431. * testsuite/23_containers/deque/modifiers/swap.cc: Move to... * testsuite/23_containers/deque/modifiers/swap/1.cc: ... here. * testsuite/23_containers/deque/modifiers/swap/2.cc: New. * testsuite/23_containers/deque/modifiers/swap/3.cc: New. * testsuite/23_containers/list/modifiers/swap.cc: Move to... * testsuite/23_containers/list/modifiers/swap/1.cc: ... here. * testsuite/23_containers/list/modifiers/swap/2.cc: New. * testsuite/23_containers/list/modifiers/swap/3.cc: New. * testsuite/23_containers/vector/modifiers/swap.cc: Move to... * testsuite/23_containers/vector/modifiers/swap/1.cc: ... here. * testsuite/23_containers/vector/modifiers/swap/2.cc: New. * testsuite/23_containers/vector/modifiers/swap/3.cc: New. * testsuite/23_containers/set/modifiers/swap.cc: Move to... * testsuite/23_containers/set/modifiers/swap/1.cc: ... here. * testsuite/23_containers/set/modifiers/swap/2.cc: New. * testsuite/23_containers/set/modifiers/swap/3.cc: New. * testsuite/23_containers/map/modifiers/swap.cc: Move to... * testsuite/23_containers/map/modifiers/swap/1.cc: ... here. * testsuite/23_containers/map/modifiers/swap/2.cc: New. * testsuite/23_containers/map/modifiers/swap/3.cc: New. * testsuite/23_containers/multiset/modifiers/swap.cc: Move to... * testsuite/23_containers/multiset/modifiers/swap/1.cc: ... here. * testsuite/23_containers/multiset/modifiers/swap/2.cc: New. * testsuite/23_containers/multiset/modifiers/swap/3.cc: New. * testsuite/23_containers/multimap/modifiers/swap.cc: Move to... * testsuite/23_containers/multimap/modifiers/swap/1.cc: ... here. * testsuite/23_containers/multimap/modifiers/swap/2.cc: New. * testsuite/23_containers/multimap/modifiers/swap/3.cc: New. * testsuite/tr1/6_containers/unordered/swap/unordered_set/1.cc: New. * testsuite/tr1/6_containers/unordered/swap/unordered_set/2.cc: New. * testsuite/tr1/6_containers/unordered/swap/unordered_map/1.cc: New. * testsuite/tr1/6_containers/unordered/swap/unordered_map/2.cc: New. * testsuite/tr1/6_containers/unordered/swap/unordered_multiset/1.cc: New. * testsuite/tr1/6_containers/unordered/swap/unordered_multiset/2.cc: New. * testsuite/tr1/6_containers/unordered/swap/unordered_multimap/1.cc: New. * testsuite/tr1/6_containers/unordered/swap/unordered_multimap/2.cc: New. From-SVN: r109324
Diffstat (limited to 'libstdc++-v3/include/ext/rc_string_base.h')
-rw-r--r--libstdc++-v3/include/ext/rc_string_base.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/libstdc++-v3/include/ext/rc_string_base.h b/libstdc++-v3/include/ext/rc_string_base.h
index a264c1e..dece887d 100644
--- a/libstdc++-v3/include/ext/rc_string_base.h
+++ b/libstdc++-v3/include/ext/rc_string_base.h
@@ -583,9 +583,11 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
_CharT* __tmp = _M_data();
_M_data(__rcs._M_data());
__rcs._M_data(__tmp);
-
- // NB: Implement Option 3 of DR 431 (see N1599).
- _M_dataplus._M_alloc_swap(__rcs._M_dataplus);
+
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 431. Swapping containers with unequal allocators.
+ std::__alloc_swap<allocator_type>::_S_do_it(_M_get_allocator(),
+ __rcs._M_get_allocator());
}
template<typename _CharT, typename _Traits, typename _Alloc>