aboutsummaryrefslogtreecommitdiff
path: root/libstdc++/stl/hashtable.h
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++/stl/hashtable.h')
-rw-r--r--libstdc++/stl/hashtable.h45
1 files changed, 12 insertions, 33 deletions
diff --git a/libstdc++/stl/hashtable.h b/libstdc++/stl/hashtable.h
index 420d7a8..fb4abc2 100644
--- a/libstdc++/stl/hashtable.h
+++ b/libstdc++/stl/hashtable.h
@@ -123,7 +123,6 @@ struct __hashtable_iterator {
typedef ptrdiff_t difference_type;
typedef size_t size_type;
typedef Value& reference;
- typedef const Value& const_reference;
typedef Value* pointer;
node* cur;
@@ -132,6 +131,9 @@ struct __hashtable_iterator {
__hashtable_iterator(node* n, hashtable* tab) : cur(n), ht(tab) {}
__hashtable_iterator() {}
reference operator*() const { return cur->val; }
+#ifndef __SGI_STL_NO_ARROW_OPERATOR
+ pointer operator->() const { return &(operator*()); }
+#endif /* __SGI_STL_NO_ARROW_OPERATOR */
iterator& operator++();
iterator operator++(int);
bool operator==(const iterator& it) const { return cur == it.cur; }
@@ -156,9 +158,8 @@ struct __hashtable_const_iterator {
typedef Value value_type;
typedef ptrdiff_t difference_type;
typedef size_t size_type;
- typedef Value& reference;
- typedef const Value& const_reference;
- typedef Value* pointer;
+ typedef const Value& reference;
+ typedef const Value* pointer;
const node* cur;
const hashtable* ht;
@@ -167,7 +168,10 @@ struct __hashtable_const_iterator {
: cur(n), ht(tab) {}
__hashtable_const_iterator() {}
__hashtable_const_iterator(const iterator& it) : cur(it.cur), ht(it.ht) {}
- const_reference operator*() const { return cur->val; }
+ reference operator*() const { return cur->val; }
+#ifndef __SGI_STL_NO_ARROW_OPERATOR
+ pointer operator->() const { return &(operator*()); }
+#endif /* __SGI_STL_NO_ARROW_OPERATOR */
const_iterator& operator++();
const_iterator operator++(int);
bool operator==(const const_iterator& it) const { return cur == it.cur; }
@@ -399,34 +403,6 @@ public:
insert_equal_noresize(*f);
}
- template <class BidirectionalIterator>
- void insert_unique(BidirectionalIterator f, BidirectionalIterator l,
- bidirectional_iterator_tag)
- {
- insert_unique(f, l, forward_iterator_tag());
- }
-
- template <class BidirectionalIterator>
- void insert_equal(BidirectionalIterator f, BidirectionalIterator l,
- bidirectional_iterator_tag)
- {
- insert_equal(f, l, forward_iterator_tag());
- }
-
- template <class RandomAccessIterator>
- void insert_unique(RandomAccessIterator f, RandomAccessIterator l,
- random_access_iterator_tag)
- {
- insert_unique(f, l, forward_iterator_tag());
- }
-
- template <class RandomAccessIterator>
- void insert_equal(RandomAccessIterator f, RandomAccessIterator l,
- random_access_iterator_tag)
- {
- insert_equal(f, l, forward_iterator_tag());
- }
-
#else /* __STL_MEMBER_TEMPLATES */
void insert_unique(const value_type* f, const value_type* l)
{
@@ -619,6 +595,7 @@ __hashtable_const_iterator<V, K, HF, ExK, EqK, A>::operator++(int)
return tmp;
}
+#ifndef __STL_CLASS_PARTIAL_SPECIALIZATION
template <class V, class K, class HF, class ExK, class EqK, class All>
inline forward_iterator_tag
@@ -661,6 +638,8 @@ distance_type(const __hashtable_const_iterator<V, K, HF, ExK, EqK, All>&)
return (hashtable<V, K, HF, ExK, EqK, All>::difference_type*) 0;
}
+#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
+
template <class V, class K, class HF, class Ex, class Eq, class A>
bool operator==(const hashtable<V, K, HF, Ex, Eq, A>& ht1,
const hashtable<V, K, HF, Ex, Eq, A>& ht2)