explicitly state typedef inheritance for Intel compiler bug

This commit is contained in:
David Rose 2002-02-25 16:18:16 +00:00
parent a1195a43fc
commit 71377eeaac
2 changed files with 35 additions and 3 deletions

View File

@ -814,8 +814,8 @@ operator = (const ov_multiset<Key, Compare> &copy) {
////////////////////////////////////////////////////////////////////
template<class Key, class Compare>
ov_multiset<Key, Compare>::iterator ov_multiset<Key, Compare>::
insert(ordered_vector<Key, Compare>::iterator position,
const ordered_vector<Key, Compare>::value_type &key) {
insert(ov_multiset<Key, Compare>::iterator position,
const ov_multiset<Key, Compare>::value_type &key) {
return ordered_vector<Key, Compare>::insert_nonunique(position, key);
}
@ -826,7 +826,7 @@ insert(ordered_vector<Key, Compare>::iterator position,
////////////////////////////////////////////////////////////////////
template<class Key, class Compare>
INLINE ov_multiset<Key, Compare>::iterator ov_multiset<Key, Compare>::
insert(const ordered_vector<Key, Compare>::value_type &key) {
insert(const ov_multiset<Key, Compare>::value_type &key) {
return ordered_vector<Key, Compare>::insert_nonunique(key);
}

View File

@ -216,6 +216,22 @@ private:
template<class Key, class Compare = less<Key> >
class ov_set : public ordered_vector<Key, Compare> {
public:
// The Intel compiler doesn't seem to inherit these typedefs
// completely--it gets confused in certain cases. We'll make it
// explicit.
typedef ordered_vector<Key, Compare>::key_type key_type;
typedef ordered_vector<Key, Compare>::value_type value_type;
typedef ordered_vector<Key, Compare>::reference reference;
typedef ordered_vector<Key, Compare>::const_reference const_reference;
typedef ordered_vector<Key, Compare>::key_compare key_compare;
typedef ordered_vector<Key, Compare>::value_compare value_compare;
typedef ordered_vector<Key, Compare>::iterator iterator;
typedef ordered_vector<Key, Compare>::const_iterator const_iterator;
typedef ordered_vector<Key, Compare>::reverse_iterator reverse_iterator;
typedef ordered_vector<Key, Compare>::const_reverse_iterator const_reverse_iterator;
typedef ordered_vector<Key, Compare>::difference_type difference_type;
typedef ordered_vector<Key, Compare>::size_type size_type;
INLINE ov_set(const Compare &compare = Compare());
INLINE ov_set(const ov_set<Key, Compare> &copy);
INLINE ov_set<Key, Compare> &operator = (const ov_set<Key, Compare> &copy);
@ -235,6 +251,22 @@ public:
template<class Key, class Compare = less<Key> >
class ov_multiset : public ordered_vector<Key, Compare> {
public:
// The Intel compiler doesn't seem to inherit these typedefs
// completely--it gets confused in certain cases. We'll make it
// explicit.
typedef ordered_vector<Key, Compare>::key_type key_type;
typedef ordered_vector<Key, Compare>::value_type value_type;
typedef ordered_vector<Key, Compare>::reference reference;
typedef ordered_vector<Key, Compare>::const_reference const_reference;
typedef ordered_vector<Key, Compare>::key_compare key_compare;
typedef ordered_vector<Key, Compare>::value_compare value_compare;
typedef ordered_vector<Key, Compare>::iterator iterator;
typedef ordered_vector<Key, Compare>::const_iterator const_iterator;
typedef ordered_vector<Key, Compare>::reverse_iterator reverse_iterator;
typedef ordered_vector<Key, Compare>::const_reverse_iterator const_reverse_iterator;
typedef ordered_vector<Key, Compare>::difference_type difference_type;
typedef ordered_vector<Key, Compare>::size_type size_type;
INLINE ov_multiset(const Compare &compare = Compare());
INLINE ov_multiset(const ov_multiset<Key, Compare> &copy);
INLINE ov_multiset<Key, Compare> &operator = (const ov_multiset<Key, Compare> &copy);