mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
revert: PR libstdc++/41975, DR 579
2010-03-08 Paolo Carlini <paolo.carlini@oracle.com> Revert: 2010-02-11 Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/41975, DR 579 * include/bits/hashtable.h (_Hashtable<>::_M_erase_node): Remove. (erase(const_iterator), erase(const_iterator, const_iterator)): Change return type to void. * include/debug/unordered_map: Adjust. * include/debug/unordered_set: Likewise. * testsuite/util/exception/safety.h: Likewise. * testsuite/23_containers/unordered_map/erase/1.cc: Likewise. * testsuite/23_containers/unordered_map/erase/24061-map.cc: Likewise. * testsuite/23_containers/unordered_set/erase/1.cc: Likewise. * testsuite/23_containers/unordered_set/erase/24061-map.cc: Likewise. * testsuite/23_containers/unordered_multimap/erase/1.cc: Likewise. * testsuite/23_containers/unordered_multimap/erase/24061-map.cc: Likewise. * testsuite/23_containers/unordered_multiset/erase/1.cc: Likewise. * testsuite/23_containers/unordered_multiset/erase/24061-map.cc: Likewise. From-SVN: r157300
This commit is contained in:
committed by
Paolo Carlini
parent
dc344e877a
commit
d723ced225
@@ -1,3 +1,26 @@
|
||||
2010-03-08 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
Revert:
|
||||
2010-02-11 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR libstdc++/41975, DR 579
|
||||
* include/bits/hashtable.h (_Hashtable<>::_M_erase_node): Remove.
|
||||
(erase(const_iterator), erase(const_iterator, const_iterator)):
|
||||
Change return type to void.
|
||||
* include/debug/unordered_map: Adjust.
|
||||
* include/debug/unordered_set: Likewise.
|
||||
* testsuite/util/exception/safety.h: Likewise.
|
||||
* testsuite/23_containers/unordered_map/erase/1.cc: Likewise.
|
||||
* testsuite/23_containers/unordered_map/erase/24061-map.cc: Likewise.
|
||||
* testsuite/23_containers/unordered_set/erase/1.cc: Likewise.
|
||||
* testsuite/23_containers/unordered_set/erase/24061-map.cc: Likewise.
|
||||
* testsuite/23_containers/unordered_multimap/erase/1.cc: Likewise.
|
||||
* testsuite/23_containers/unordered_multimap/erase/24061-map.cc:
|
||||
Likewise.
|
||||
* testsuite/23_containers/unordered_multiset/erase/1.cc: Likewise.
|
||||
* testsuite/23_containers/unordered_multiset/erase/24061-map.cc:
|
||||
Likewise.
|
||||
|
||||
2010-03-04 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* testsuite/util/testsuite_container_traits.h (traits_base): Add
|
||||
|
||||
@@ -385,6 +385,9 @@ namespace std
|
||||
iterator
|
||||
_M_insert(const value_type&, std::false_type);
|
||||
|
||||
void
|
||||
_M_erase_node(_Node*, _Node**);
|
||||
|
||||
public:
|
||||
// Insert and erase
|
||||
_Insert_Return_Type
|
||||
@@ -404,13 +407,13 @@ namespace std
|
||||
insert(initializer_list<value_type> __l)
|
||||
{ this->insert(__l.begin(), __l.end()); }
|
||||
|
||||
void
|
||||
iterator
|
||||
erase(const_iterator);
|
||||
|
||||
size_type
|
||||
erase(const key_type&);
|
||||
|
||||
void
|
||||
iterator
|
||||
erase(const_iterator, const_iterator);
|
||||
|
||||
void
|
||||
@@ -974,6 +977,34 @@ namespace std
|
||||
return iterator(__new_node, _M_buckets + __n);
|
||||
}
|
||||
|
||||
// For erase(iterator) and erase(const_iterator).
|
||||
template<typename _Key, typename _Value,
|
||||
typename _Allocator, typename _ExtractKey, typename _Equal,
|
||||
typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
|
||||
bool __chc, bool __cit, bool __uk>
|
||||
void
|
||||
_Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
|
||||
_H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
|
||||
_M_erase_node(_Node* __p, _Node** __b)
|
||||
{
|
||||
_Node* __cur = *__b;
|
||||
if (__cur == __p)
|
||||
*__b = __cur->_M_next;
|
||||
else
|
||||
{
|
||||
_Node* __next = __cur->_M_next;
|
||||
while (__next != __p)
|
||||
{
|
||||
__cur = __next;
|
||||
__next = __cur->_M_next;
|
||||
}
|
||||
__cur->_M_next = __next->_M_next;
|
||||
}
|
||||
|
||||
_M_deallocate_node(__p);
|
||||
--_M_element_count;
|
||||
}
|
||||
|
||||
template<typename _Key, typename _Value,
|
||||
typename _Allocator, typename _ExtractKey, typename _Equal,
|
||||
typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
|
||||
@@ -999,30 +1030,17 @@ namespace std
|
||||
typename _Allocator, typename _ExtractKey, typename _Equal,
|
||||
typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
|
||||
bool __chc, bool __cit, bool __uk>
|
||||
void
|
||||
typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
|
||||
_H1, _H2, _Hash, _RehashPolicy,
|
||||
__chc, __cit, __uk>::iterator
|
||||
_Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
|
||||
_H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
|
||||
erase(const_iterator __it)
|
||||
{
|
||||
_Node* __p = __it._M_cur_node;
|
||||
_Node** __b = __it._M_cur_bucket;
|
||||
|
||||
_Node* __cur = *__b;
|
||||
if (__cur == __p)
|
||||
*__b = __cur->_M_next;
|
||||
else
|
||||
{
|
||||
_Node* __next = __cur->_M_next;
|
||||
while (__next != __p)
|
||||
{
|
||||
__cur = __next;
|
||||
__next = __cur->_M_next;
|
||||
}
|
||||
__cur->_M_next = __next->_M_next;
|
||||
}
|
||||
|
||||
_M_deallocate_node(__p);
|
||||
--_M_element_count;
|
||||
iterator __result(__it._M_cur_node, __it._M_cur_bucket);
|
||||
++__result;
|
||||
_M_erase_node(__it._M_cur_node, __it._M_cur_bucket);
|
||||
return __result;
|
||||
}
|
||||
|
||||
template<typename _Key, typename _Value,
|
||||
@@ -1084,17 +1102,17 @@ namespace std
|
||||
typename _Allocator, typename _ExtractKey, typename _Equal,
|
||||
typename _H1, typename _H2, typename _Hash, typename _RehashPolicy,
|
||||
bool __chc, bool __cit, bool __uk>
|
||||
void
|
||||
typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
|
||||
_H1, _H2, _Hash, _RehashPolicy,
|
||||
__chc, __cit, __uk>::iterator
|
||||
_Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
|
||||
_H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
|
||||
erase(const_iterator __first, const_iterator __last)
|
||||
{
|
||||
if (__first == begin() && __last == end())
|
||||
clear();
|
||||
else
|
||||
while (__first != __last)
|
||||
erase(__first++);
|
||||
}
|
||||
while (__first != __last)
|
||||
__first = this->erase(__first);
|
||||
return iterator(__last._M_cur_node, __last._M_cur_bucket);
|
||||
}
|
||||
|
||||
template<typename _Key, typename _Value,
|
||||
typename _Allocator, typename _ExtractKey, typename _Equal,
|
||||
|
||||
@@ -243,24 +243,25 @@ namespace __debug
|
||||
return __ret;
|
||||
}
|
||||
|
||||
void
|
||||
iterator
|
||||
erase(const_iterator __it)
|
||||
{
|
||||
__glibcxx_check_erase(__it);
|
||||
__it._M_invalidate();
|
||||
_Base::erase(__it.base());
|
||||
return iterator(_Base::erase(__it.base()), this);
|
||||
}
|
||||
|
||||
void
|
||||
iterator
|
||||
erase(const_iterator __first, const_iterator __last)
|
||||
{
|
||||
__glibcxx_check_erase_range(__first, __last);
|
||||
for (const_iterator __tmp = __first; __tmp != __last;)
|
||||
{
|
||||
const_iterator __victim = __tmp++;
|
||||
__victim._M_invalidate();
|
||||
}
|
||||
_Base::erase(__first.base(), __last.base());
|
||||
{
|
||||
const_iterator __victim = __tmp++;
|
||||
__victim._M_invalidate();
|
||||
}
|
||||
return iterator(_Base::erase(__first.base(),
|
||||
__last.base()), this);
|
||||
}
|
||||
|
||||
_Base&
|
||||
@@ -479,24 +480,25 @@ namespace __debug
|
||||
return __ret;
|
||||
}
|
||||
|
||||
void
|
||||
iterator
|
||||
erase(const_iterator __it)
|
||||
{
|
||||
__glibcxx_check_erase(__it);
|
||||
__it._M_invalidate();
|
||||
_Base::erase(__it.base());
|
||||
return iterator(_Base::erase(__it.base()), this);
|
||||
}
|
||||
|
||||
void
|
||||
iterator
|
||||
erase(const_iterator __first, const_iterator __last)
|
||||
{
|
||||
__glibcxx_check_erase_range(__first, __last);
|
||||
for (const_iterator __tmp = __first; __tmp != __last;)
|
||||
{
|
||||
const_iterator __victim = __tmp++;
|
||||
__victim._M_invalidate();
|
||||
}
|
||||
_Base::erase(__first.base(), __last.base());
|
||||
{
|
||||
const_iterator __victim = __tmp++;
|
||||
__victim._M_invalidate();
|
||||
}
|
||||
return iterator(_Base::erase(__first.base(),
|
||||
__last.base()), this);
|
||||
}
|
||||
|
||||
_Base&
|
||||
|
||||
@@ -243,24 +243,25 @@ namespace __debug
|
||||
return __ret;
|
||||
}
|
||||
|
||||
void
|
||||
iterator
|
||||
erase(const_iterator __it)
|
||||
{
|
||||
__glibcxx_check_erase(__it);
|
||||
__it._M_invalidate();
|
||||
_Base::erase(__it.base());
|
||||
return iterator(_Base::erase(__it.base()), this);
|
||||
}
|
||||
|
||||
void
|
||||
iterator
|
||||
erase(const_iterator __first, const_iterator __last)
|
||||
{
|
||||
__glibcxx_check_erase_range(__first, __last);
|
||||
for (const_iterator __tmp = __first; __tmp != __last;)
|
||||
{
|
||||
const_iterator __victim = __tmp++;
|
||||
__victim._M_invalidate();
|
||||
}
|
||||
_Base::erase(__first.base(), __last.base());
|
||||
{
|
||||
const_iterator __victim = __tmp++;
|
||||
__victim._M_invalidate();
|
||||
}
|
||||
return iterator(_Base::erase(__first.base(),
|
||||
__last.base()), this);
|
||||
}
|
||||
|
||||
_Base&
|
||||
@@ -477,24 +478,25 @@ namespace __debug
|
||||
return __ret;
|
||||
}
|
||||
|
||||
void
|
||||
iterator
|
||||
erase(const_iterator __it)
|
||||
{
|
||||
__glibcxx_check_erase(__it);
|
||||
__it._M_invalidate();
|
||||
_Base::erase(__it.base());
|
||||
return iterator(_Base::erase(__it.base()), this);
|
||||
}
|
||||
|
||||
void
|
||||
iterator
|
||||
erase(const_iterator __first, const_iterator __last)
|
||||
{
|
||||
__glibcxx_check_erase_range(__first, __last);
|
||||
for (const_iterator __tmp = __first; __tmp != __last;)
|
||||
{
|
||||
const_iterator __victim = __tmp++;
|
||||
__victim._M_invalidate();
|
||||
}
|
||||
_Base::erase(__first.base(), __last.base());
|
||||
{
|
||||
const_iterator __victim = __tmp++;
|
||||
__victim._M_invalidate();
|
||||
}
|
||||
return iterator(_Base::erase(__first.base(),
|
||||
__last.base()), this);
|
||||
}
|
||||
|
||||
_Base&
|
||||
|
||||
@@ -113,7 +113,7 @@ void test01()
|
||||
VERIFY( m1.size() == 2 );
|
||||
VERIFY( ++it10 == m1.end() );
|
||||
|
||||
m1.erase(m1.begin());
|
||||
VERIFY( m1.erase(m1.begin()) != m1.end() );
|
||||
VERIFY( m1.size() == 1 );
|
||||
VERIFY( m1.begin() == it11 );
|
||||
|
||||
|
||||
@@ -51,8 +51,10 @@ void test01()
|
||||
++it1;
|
||||
iterator it2 = it1;
|
||||
++it2;
|
||||
m1.erase(it1);
|
||||
iterator it3 = m1.erase(it1);
|
||||
VERIFY( m1.size() == 9 );
|
||||
VERIFY( it3 == it2 );
|
||||
VERIFY( *it3 == *it2 );
|
||||
|
||||
iterator it4 = m1.begin();
|
||||
++it4;
|
||||
@@ -61,8 +63,10 @@ void test01()
|
||||
iterator it5 = it4;
|
||||
++it5;
|
||||
++it5;
|
||||
m1.erase(it4, it5);
|
||||
iterator it6 = m1.erase(it4, it5);
|
||||
VERIFY( m1.size() == 7 );
|
||||
VERIFY( it6 == it5 );
|
||||
VERIFY( *it6 == *it5 );
|
||||
|
||||
const_iterator it7 = m1.begin();
|
||||
++it7;
|
||||
@@ -70,8 +74,10 @@ void test01()
|
||||
++it7;
|
||||
const_iterator it8 = it7;
|
||||
++it8;
|
||||
m1.erase(it7);
|
||||
const_iterator it9 = m1.erase(it7);
|
||||
VERIFY( m1.size() == 6 );
|
||||
VERIFY( it9 == it8 );
|
||||
VERIFY( *it9 == *it8 );
|
||||
|
||||
const_iterator it10 = m1.begin();
|
||||
++it10;
|
||||
@@ -80,11 +86,16 @@ void test01()
|
||||
++it11;
|
||||
++it11;
|
||||
++it11;
|
||||
m1.erase(it10, it11);
|
||||
const_iterator it12 = m1.erase(it10, it11);
|
||||
VERIFY( m1.size() == 2 );
|
||||
VERIFY( it12 == it11 );
|
||||
VERIFY( *it12 == *it11 );
|
||||
VERIFY( ++it12 == m1.end() );
|
||||
|
||||
m1.erase(m1.begin(), m1.end());
|
||||
iterator it13 = m1.erase(m1.begin(), m1.end());
|
||||
VERIFY( m1.size() == 0 );
|
||||
VERIFY( it13 == it12 );
|
||||
VERIFY( it13 == m1.begin() );
|
||||
}
|
||||
|
||||
int main()
|
||||
|
||||
@@ -113,7 +113,7 @@ void test01()
|
||||
VERIFY( mm1.size() == 2 );
|
||||
VERIFY( ++it10 == mm1.end() );
|
||||
|
||||
mm1.erase(mm1.begin());
|
||||
VERIFY( mm1.erase(mm1.begin()) != mm1.end() );
|
||||
VERIFY( mm1.size() == 1 );
|
||||
VERIFY( mm1.begin() == it11 );
|
||||
|
||||
|
||||
@@ -55,8 +55,10 @@ void test01()
|
||||
++it1;
|
||||
iterator it2 = it1;
|
||||
++it2;
|
||||
mm1.erase(it1);
|
||||
iterator it3 = mm1.erase(it1);
|
||||
VERIFY( mm1.size() == 12 );
|
||||
VERIFY( it3 == it2 );
|
||||
VERIFY( *it3 == *it2 );
|
||||
|
||||
iterator it4 = mm1.begin();
|
||||
++it4;
|
||||
@@ -65,8 +67,10 @@ void test01()
|
||||
iterator it5 = it4;
|
||||
++it5;
|
||||
++it5;
|
||||
mm1.erase(it4, it5);
|
||||
iterator it6 = mm1.erase(it4, it5);
|
||||
VERIFY( mm1.size() == 10 );
|
||||
VERIFY( it6 == it5 );
|
||||
VERIFY( *it6 == *it5 );
|
||||
|
||||
const_iterator it7 = mm1.begin();
|
||||
++it7;
|
||||
@@ -74,8 +78,10 @@ void test01()
|
||||
++it7;
|
||||
const_iterator it8 = it7;
|
||||
++it8;
|
||||
mm1.erase(it7);
|
||||
const_iterator it9 = mm1.erase(it7);
|
||||
VERIFY( mm1.size() == 9 );
|
||||
VERIFY( it9 == it8 );
|
||||
VERIFY( *it9 == *it8 );
|
||||
|
||||
const_iterator it10 = mm1.begin();
|
||||
++it10;
|
||||
@@ -84,11 +90,15 @@ void test01()
|
||||
++it11;
|
||||
++it11;
|
||||
++it11;
|
||||
mm1.erase(it10, it11);
|
||||
const_iterator it12 = mm1.erase(it10, it11);
|
||||
VERIFY( mm1.size() == 5 );
|
||||
VERIFY( it12 == it11 );
|
||||
VERIFY( *it12 == *it11 );
|
||||
|
||||
mm1.erase(mm1.begin(), mm1.end());
|
||||
iterator it13 = mm1.erase(mm1.begin(), mm1.end());
|
||||
VERIFY( mm1.size() == 0 );
|
||||
VERIFY( it13 == mm1.end() );
|
||||
VERIFY( it13 == mm1.begin() );
|
||||
}
|
||||
|
||||
int main()
|
||||
|
||||
@@ -112,7 +112,7 @@ void test01()
|
||||
VERIFY( ms1.size() == 2 );
|
||||
VERIFY( ++it10 == ms1.end() );
|
||||
|
||||
ms1.erase(ms1.begin());
|
||||
VERIFY( ms1.erase(ms1.begin()) != ms1.end() );
|
||||
VERIFY( ms1.size() == 1 );
|
||||
VERIFY( ms1.begin() == it11 );
|
||||
|
||||
|
||||
@@ -54,8 +54,10 @@ void test01()
|
||||
++it1;
|
||||
iterator it2 = it1;
|
||||
++it2;
|
||||
ms1.erase(it1);
|
||||
iterator it3 = ms1.erase(it1);
|
||||
VERIFY( ms1.size() == 12 );
|
||||
VERIFY( it3 == it2 );
|
||||
VERIFY( *it3 == *it2 );
|
||||
|
||||
iterator it4 = ms1.begin();
|
||||
++it4;
|
||||
@@ -64,8 +66,10 @@ void test01()
|
||||
iterator it5 = it4;
|
||||
++it5;
|
||||
++it5;
|
||||
ms1.erase(it4, it5);
|
||||
iterator it6 = ms1.erase(it4, it5);
|
||||
VERIFY( ms1.size() == 10 );
|
||||
VERIFY( it6 == it5 );
|
||||
VERIFY( *it6 == *it5 );
|
||||
|
||||
const_iterator it7 = ms1.begin();
|
||||
++it7;
|
||||
@@ -73,8 +77,10 @@ void test01()
|
||||
++it7;
|
||||
const_iterator it8 = it7;
|
||||
++it8;
|
||||
ms1.erase(it7);
|
||||
const_iterator it9 = ms1.erase(it7);
|
||||
VERIFY( ms1.size() == 9 );
|
||||
VERIFY( it9 == it8 );
|
||||
VERIFY( *it9 == *it8 );
|
||||
|
||||
const_iterator it10 = ms1.begin();
|
||||
++it10;
|
||||
@@ -83,11 +89,15 @@ void test01()
|
||||
++it11;
|
||||
++it11;
|
||||
++it11;
|
||||
ms1.erase(it10, it11);
|
||||
const_iterator it12 = ms1.erase(it10, it11);
|
||||
VERIFY( ms1.size() == 5 );
|
||||
VERIFY( it12 == it11 );
|
||||
VERIFY( *it12 == *it11 );
|
||||
|
||||
ms1.erase(ms1.begin(), ms1.end());
|
||||
iterator it13 = ms1.erase(ms1.begin(), ms1.end());
|
||||
VERIFY( ms1.size() == 0 );
|
||||
VERIFY( it13 == ms1.end() );
|
||||
VERIFY( it13 == ms1.begin() );
|
||||
}
|
||||
|
||||
int main()
|
||||
|
||||
@@ -112,7 +112,7 @@ void test01()
|
||||
VERIFY( s1.size() == 2 );
|
||||
VERIFY( ++it10 == s1.end() );
|
||||
|
||||
s1.erase(s1.begin());
|
||||
VERIFY( s1.erase(s1.begin()) != s1.end() );
|
||||
VERIFY( s1.size() == 1 );
|
||||
VERIFY( s1.begin() == it11 );
|
||||
|
||||
|
||||
@@ -50,8 +50,10 @@ void test01()
|
||||
++it1;
|
||||
iterator it2 = it1;
|
||||
++it2;
|
||||
s1.erase(it1);
|
||||
iterator it3 = s1.erase(it1);
|
||||
VERIFY( s1.size() == 9 );
|
||||
VERIFY( it3 == it2 );
|
||||
VERIFY( *it3 == *it2 );
|
||||
|
||||
iterator it4 = s1.begin();
|
||||
++it4;
|
||||
@@ -60,8 +62,10 @@ void test01()
|
||||
iterator it5 = it4;
|
||||
++it5;
|
||||
++it5;
|
||||
s1.erase(it4, it5);
|
||||
iterator it6 = s1.erase(it4, it5);
|
||||
VERIFY( s1.size() == 7 );
|
||||
VERIFY( it6 == it5 );
|
||||
VERIFY( *it6 == *it5 );
|
||||
|
||||
const_iterator it7 = s1.begin();
|
||||
++it7;
|
||||
@@ -69,8 +73,10 @@ void test01()
|
||||
++it7;
|
||||
const_iterator it8 = it7;
|
||||
++it8;
|
||||
s1.erase(it7);
|
||||
const_iterator it9 = s1.erase(it7);
|
||||
VERIFY( s1.size() == 6 );
|
||||
VERIFY( it9 == it8 );
|
||||
VERIFY( *it9 == *it8 );
|
||||
|
||||
const_iterator it10 = s1.begin();
|
||||
++it10;
|
||||
@@ -79,11 +85,16 @@ void test01()
|
||||
++it11;
|
||||
++it11;
|
||||
++it11;
|
||||
s1.erase(it10, it11);
|
||||
const_iterator it12 = s1.erase(it10, it11);
|
||||
VERIFY( s1.size() == 2 );
|
||||
VERIFY( it12 == it11 );
|
||||
VERIFY( *it12 == *it11 );
|
||||
VERIFY( ++it12 == s1.end() );
|
||||
|
||||
s1.erase(s1.begin(), s1.end());
|
||||
iterator it13 = s1.erase(s1.begin(), s1.end());
|
||||
VERIFY( s1.size() == 0 );
|
||||
VERIFY( it13 == s1.end() );
|
||||
VERIFY( it13 == s1.begin() );
|
||||
}
|
||||
|
||||
int main()
|
||||
|
||||
@@ -285,9 +285,9 @@ namespace __gnu_test
|
||||
typedef typename container_type::iterator iterator;
|
||||
typedef typename container_type::const_iterator const_iterator;
|
||||
|
||||
void (container_type::* _F_erase_point)(const_iterator);
|
||||
void (container_type::* _F_erase_range)(const_iterator,
|
||||
const_iterator);
|
||||
iterator (container_type::* _F_erase_point)(const_iterator);
|
||||
iterator (container_type::* _F_erase_range)(const_iterator,
|
||||
const_iterator);
|
||||
|
||||
erase_base()
|
||||
: _F_erase_point(&container_type::erase),
|
||||
@@ -304,9 +304,9 @@ namespace __gnu_test
|
||||
typedef typename container_type::iterator iterator;
|
||||
typedef typename container_type::const_iterator const_iterator;
|
||||
|
||||
void (container_type::* _F_erase_point)(const_iterator);
|
||||
void (container_type::* _F_erase_range)(const_iterator,
|
||||
const_iterator);
|
||||
iterator (container_type::* _F_erase_point)(const_iterator);
|
||||
iterator (container_type::* _F_erase_range)(const_iterator,
|
||||
const_iterator);
|
||||
|
||||
erase_base()
|
||||
: _F_erase_point(&container_type::erase),
|
||||
@@ -321,9 +321,9 @@ namespace __gnu_test
|
||||
typedef typename container_type::iterator iterator;
|
||||
typedef typename container_type::const_iterator const_iterator;
|
||||
|
||||
void (container_type::* _F_erase_point)(const_iterator);
|
||||
void (container_type::* _F_erase_range)(const_iterator,
|
||||
const_iterator);
|
||||
iterator (container_type::* _F_erase_point)(const_iterator);
|
||||
iterator (container_type::* _F_erase_range)(const_iterator,
|
||||
const_iterator);
|
||||
|
||||
erase_base()
|
||||
: _F_erase_point(&container_type::erase),
|
||||
@@ -338,9 +338,9 @@ namespace __gnu_test
|
||||
typedef typename container_type::iterator iterator;
|
||||
typedef typename container_type::const_iterator const_iterator;
|
||||
|
||||
void (container_type::* _F_erase_point)(const_iterator);
|
||||
void (container_type::* _F_erase_range)(const_iterator,
|
||||
const_iterator);
|
||||
iterator (container_type::* _F_erase_point)(const_iterator);
|
||||
iterator (container_type::* _F_erase_range)(const_iterator,
|
||||
const_iterator);
|
||||
|
||||
erase_base()
|
||||
: _F_erase_point(&container_type::erase),
|
||||
|
||||
Reference in New Issue
Block a user