mirror of
https://github.com/boostorg/intrusive.git
synced 2025-05-09 14:57:49 +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>
|
||||
class hashtable_iterator
|
||||
: public std::iterator
|
||||
{
|
||||
typedef std::iterator
|
||||
< std::forward_iterator_tag
|
||||
, typename BucketValueTraits::value_traits::value_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 detail::add_const_if_c
|
||||
<typename BucketValueTraits::value_traits::value_type, IsConst>::type &
|
||||
>
|
||||
{
|
||||
> iterator_traits;
|
||||
|
||||
typedef typename BucketValueTraits::value_traits value_traits;
|
||||
typedef typename BucketValueTraits::bucket_traits bucket_traits;
|
||||
typedef typename value_traits::node_traits node_traits;
|
||||
@ -207,9 +208,11 @@ class hashtable_iterator
|
||||
}
|
||||
|
||||
public:
|
||||
typedef typename value_traits::value_type value_type;
|
||||
typedef typename detail::add_const_if_c<value_type, IsConst>::type *pointer;
|
||||
typedef typename detail::add_const_if_c<value_type, IsConst>::type &reference;
|
||||
typedef typename iterator_traits::difference_type difference_type;
|
||||
typedef typename iterator_traits::value_type value_type;
|
||||
typedef typename iterator_traits::pointer pointer;
|
||||
typedef typename iterator_traits::reference reference;
|
||||
typedef typename iterator_traits::iterator_category iterator_category;
|
||||
|
||||
hashtable_iterator ()
|
||||
{}
|
||||
|
@ -67,7 +67,6 @@ struct list_node_traits
|
||||
// node oriented bidirectional iterator:
|
||||
template<class RealValueTraits, bool IsConst>
|
||||
class list_iterator
|
||||
: public iiterator<RealValueTraits, IsConst, std::bidirectional_iterator_tag>::iterator_base
|
||||
{
|
||||
protected:
|
||||
typedef iiterator
|
||||
@ -83,9 +82,11 @@ class list_iterator
|
||||
typedef typename types_t::void_pointer void_pointer;
|
||||
|
||||
public:
|
||||
typedef typename types_t::value_type value_type;
|
||||
typedef typename types_t::pointer pointer;
|
||||
typedef typename types_t::reference reference;
|
||||
typedef typename types_t::iterator_traits::difference_type difference_type;
|
||||
typedef typename types_t::iterator_traits::value_type value_type;
|
||||
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
|
||||
<void_pointer>::template rebind_pointer
|
||||
|
@ -56,7 +56,6 @@ struct slist_node_traits
|
||||
// node oriented bidirectional iterator:
|
||||
template<class RealValueTraits, bool IsConst>
|
||||
class slist_iterator
|
||||
: public iiterator<RealValueTraits, IsConst, std::forward_iterator_tag>::iterator_base
|
||||
{
|
||||
protected:
|
||||
typedef iiterator
|
||||
@ -72,9 +71,11 @@ class slist_iterator
|
||||
typedef typename types_t::void_pointer void_pointer;
|
||||
|
||||
public:
|
||||
typedef typename types_t::value_type value_type;
|
||||
typedef typename types_t::pointer pointer;
|
||||
typedef typename types_t::reference reference;
|
||||
typedef typename types_t::iterator_traits::difference_type difference_type;
|
||||
typedef typename types_t::iterator_traits::value_type value_type;
|
||||
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
|
||||
<void_pointer>::template rebind_pointer
|
||||
|
@ -82,7 +82,6 @@ struct tree_node_traits
|
||||
// node oriented bidirectional iterator:
|
||||
template<class RealValueTraits, bool IsConst>
|
||||
class tree_iterator
|
||||
: public iiterator<RealValueTraits, IsConst, std::bidirectional_iterator_tag>::iterator_base
|
||||
{
|
||||
protected:
|
||||
typedef iiterator< RealValueTraits, IsConst
|
||||
@ -99,13 +98,14 @@ class tree_iterator
|
||||
typedef typename pointer_traits
|
||||
<void_pointer>::template rebind_pointer
|
||||
<const real_value_traits>::type const_real_value_traits_ptr;
|
||||
typedef bstree_algorithms<node_traits> node_algorithms;
|
||||
|
||||
public:
|
||||
typedef typename types_t::value_type value_type;
|
||||
typedef typename types_t::pointer pointer;
|
||||
typedef typename types_t::reference reference;
|
||||
|
||||
typedef bstree_algorithms<node_traits> node_algorithms;
|
||||
typedef typename types_t::iterator_traits::difference_type difference_type;
|
||||
typedef typename types_t::iterator_traits::value_type value_type;
|
||||
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;
|
||||
|
||||
tree_iterator()
|
||||
{}
|
||||
|
@ -1106,7 +1106,7 @@ struct iiterator
|
||||
, difference_type
|
||||
, pointer
|
||||
, reference
|
||||
> iterator_base;
|
||||
> iterator_traits;
|
||||
static const bool stateful_value_traits =
|
||||
detail::is_stateful_value_traits<real_value_traits>::value;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user