mirror of
https://github.com/boostorg/intrusive.git
synced 2025-05-11 05:07:46 +00:00
Fix MSVC-8.0 iterator sizes avoiding derivation from std::iterator_traits
This commit is contained in:
parent
c1fdae5eb4
commit
4f60ed75b5
@ -173,7 +173,8 @@ struct get_slist_impl
|
|||||||
|
|
||||||
template<class BucketValueTraits, bool IsConst>
|
template<class BucketValueTraits, bool IsConst>
|
||||||
class hashtable_iterator
|
class hashtable_iterator
|
||||||
: public std::iterator
|
{
|
||||||
|
typedef std::iterator
|
||||||
< std::forward_iterator_tag
|
< std::forward_iterator_tag
|
||||||
, typename BucketValueTraits::value_traits::value_type
|
, typename BucketValueTraits::value_traits::value_type
|
||||||
, typename pointer_traits<typename BucketValueTraits::value_traits::value_type*>::difference_type
|
, typename pointer_traits<typename BucketValueTraits::value_traits::value_type*>::difference_type
|
||||||
@ -181,8 +182,8 @@ class hashtable_iterator
|
|||||||
<typename BucketValueTraits::value_traits::value_type, IsConst>::type *
|
<typename BucketValueTraits::value_traits::value_type, IsConst>::type *
|
||||||
, typename detail::add_const_if_c
|
, typename detail::add_const_if_c
|
||||||
<typename BucketValueTraits::value_traits::value_type, IsConst>::type &
|
<typename BucketValueTraits::value_traits::value_type, IsConst>::type &
|
||||||
>
|
> iterator_traits;
|
||||||
{
|
|
||||||
typedef typename BucketValueTraits::value_traits value_traits;
|
typedef typename BucketValueTraits::value_traits value_traits;
|
||||||
typedef typename BucketValueTraits::bucket_traits bucket_traits;
|
typedef typename BucketValueTraits::bucket_traits bucket_traits;
|
||||||
typedef typename value_traits::node_traits node_traits;
|
typedef typename value_traits::node_traits node_traits;
|
||||||
@ -207,9 +208,11 @@ class hashtable_iterator
|
|||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef typename value_traits::value_type value_type;
|
typedef typename iterator_traits::difference_type difference_type;
|
||||||
typedef typename detail::add_const_if_c<value_type, IsConst>::type *pointer;
|
typedef typename iterator_traits::value_type value_type;
|
||||||
typedef typename detail::add_const_if_c<value_type, IsConst>::type &reference;
|
typedef typename iterator_traits::pointer pointer;
|
||||||
|
typedef typename iterator_traits::reference reference;
|
||||||
|
typedef typename iterator_traits::iterator_category iterator_category;
|
||||||
|
|
||||||
hashtable_iterator ()
|
hashtable_iterator ()
|
||||||
{}
|
{}
|
||||||
|
@ -67,7 +67,6 @@ struct list_node_traits
|
|||||||
// node oriented bidirectional iterator:
|
// node oriented bidirectional iterator:
|
||||||
template<class RealValueTraits, bool IsConst>
|
template<class RealValueTraits, bool IsConst>
|
||||||
class list_iterator
|
class list_iterator
|
||||||
: public iiterator<RealValueTraits, IsConst, std::bidirectional_iterator_tag>::iterator_base
|
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
typedef iiterator
|
typedef iiterator
|
||||||
@ -83,9 +82,11 @@ class list_iterator
|
|||||||
typedef typename types_t::void_pointer void_pointer;
|
typedef typename types_t::void_pointer void_pointer;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef typename types_t::value_type value_type;
|
typedef typename types_t::iterator_traits::difference_type difference_type;
|
||||||
typedef typename types_t::pointer pointer;
|
typedef typename types_t::iterator_traits::value_type value_type;
|
||||||
typedef typename types_t::reference reference;
|
typedef typename types_t::iterator_traits::pointer pointer;
|
||||||
|
typedef typename types_t::iterator_traits::reference reference;
|
||||||
|
typedef typename types_t::iterator_traits::iterator_category iterator_category;
|
||||||
|
|
||||||
typedef typename pointer_traits
|
typedef typename pointer_traits
|
||||||
<void_pointer>::template rebind_pointer
|
<void_pointer>::template rebind_pointer
|
||||||
|
@ -56,7 +56,6 @@ struct slist_node_traits
|
|||||||
// node oriented bidirectional iterator:
|
// node oriented bidirectional iterator:
|
||||||
template<class RealValueTraits, bool IsConst>
|
template<class RealValueTraits, bool IsConst>
|
||||||
class slist_iterator
|
class slist_iterator
|
||||||
: public iiterator<RealValueTraits, IsConst, std::forward_iterator_tag>::iterator_base
|
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
typedef iiterator
|
typedef iiterator
|
||||||
@ -72,9 +71,11 @@ class slist_iterator
|
|||||||
typedef typename types_t::void_pointer void_pointer;
|
typedef typename types_t::void_pointer void_pointer;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef typename types_t::value_type value_type;
|
typedef typename types_t::iterator_traits::difference_type difference_type;
|
||||||
typedef typename types_t::pointer pointer;
|
typedef typename types_t::iterator_traits::value_type value_type;
|
||||||
typedef typename types_t::reference reference;
|
typedef typename types_t::iterator_traits::pointer pointer;
|
||||||
|
typedef typename types_t::iterator_traits::reference reference;
|
||||||
|
typedef typename types_t::iterator_traits::iterator_category iterator_category;
|
||||||
|
|
||||||
typedef typename pointer_traits
|
typedef typename pointer_traits
|
||||||
<void_pointer>::template rebind_pointer
|
<void_pointer>::template rebind_pointer
|
||||||
|
@ -82,7 +82,6 @@ struct tree_node_traits
|
|||||||
// node oriented bidirectional iterator:
|
// node oriented bidirectional iterator:
|
||||||
template<class RealValueTraits, bool IsConst>
|
template<class RealValueTraits, bool IsConst>
|
||||||
class tree_iterator
|
class tree_iterator
|
||||||
: public iiterator<RealValueTraits, IsConst, std::bidirectional_iterator_tag>::iterator_base
|
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
typedef iiterator< RealValueTraits, IsConst
|
typedef iiterator< RealValueTraits, IsConst
|
||||||
@ -99,13 +98,14 @@ class tree_iterator
|
|||||||
typedef typename pointer_traits
|
typedef typename pointer_traits
|
||||||
<void_pointer>::template rebind_pointer
|
<void_pointer>::template rebind_pointer
|
||||||
<const real_value_traits>::type const_real_value_traits_ptr;
|
<const real_value_traits>::type const_real_value_traits_ptr;
|
||||||
|
typedef bstree_algorithms<node_traits> node_algorithms;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef typename types_t::value_type value_type;
|
typedef typename types_t::iterator_traits::difference_type difference_type;
|
||||||
typedef typename types_t::pointer pointer;
|
typedef typename types_t::iterator_traits::value_type value_type;
|
||||||
typedef typename types_t::reference reference;
|
typedef typename types_t::iterator_traits::pointer pointer;
|
||||||
|
typedef typename types_t::iterator_traits::reference reference;
|
||||||
typedef bstree_algorithms<node_traits> node_algorithms;
|
typedef typename types_t::iterator_traits::iterator_category iterator_category;
|
||||||
|
|
||||||
tree_iterator()
|
tree_iterator()
|
||||||
{}
|
{}
|
||||||
|
@ -1106,7 +1106,7 @@ struct iiterator
|
|||||||
, difference_type
|
, difference_type
|
||||||
, pointer
|
, pointer
|
||||||
, reference
|
, reference
|
||||||
> iterator_base;
|
> iterator_traits;
|
||||||
static const bool stateful_value_traits =
|
static const bool stateful_value_traits =
|
||||||
detail::is_stateful_value_traits<real_value_traits>::value;
|
detail::is_stateful_value_traits<real_value_traits>::value;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user