mirror of https://github.com/CGAL/cgal
fix Prevent_deref<Union_find::iterator>
`std::iterator_traits` requires that the iterator type defines all five nested types. I have also modified the implementation of ```c++ make_prevent_deref_range(Range) ```
This commit is contained in:
parent
0b2ebbc23e
commit
2a8a32d6ad
|
|
@ -69,12 +69,6 @@ private:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename I>
|
|
||||||
Iterator_range<Prevent_deref<I> > make_prevent_deref_range(const Iterator_range<I>& range)
|
|
||||||
{
|
|
||||||
return Iterator_range<Prevent_deref<I> >(make_prevent_deref(range.first), make_prevent_deref(range.second));
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename I>
|
template<typename I>
|
||||||
Prevent_deref<I> make_prevent_deref(const I& i)
|
Prevent_deref<I> make_prevent_deref(const I& i)
|
||||||
{
|
{
|
||||||
|
|
@ -87,6 +81,14 @@ Iterator_range<Prevent_deref<I> > make_prevent_deref_range(const I& begin, const
|
||||||
return Iterator_range<Prevent_deref<I> >(make_prevent_deref(begin), make_prevent_deref(end));
|
return Iterator_range<Prevent_deref<I> >(make_prevent_deref(begin), make_prevent_deref(end));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename R>
|
||||||
|
auto make_prevent_deref_range(const R& range)
|
||||||
|
{
|
||||||
|
using std::begin;
|
||||||
|
using std::end;
|
||||||
|
return make_range(make_prevent_deref(begin(range)), make_prevent_deref(end(range)));
|
||||||
|
}
|
||||||
|
|
||||||
namespace cpp98 {
|
namespace cpp98 {
|
||||||
|
|
||||||
template<typename Category, typename Tp, typename Distance = std::ptrdiff_t,
|
template<typename Category, typename Tp, typename Distance = std::ptrdiff_t,
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/basic.h>
|
||||||
#include <CGAL/memory.h>
|
#include <CGAL/memory.h>
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
|
#include <iterator>
|
||||||
|
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
|
|
@ -39,6 +40,7 @@ public:
|
||||||
typedef R_ reference;
|
typedef R_ reference;
|
||||||
typedef P_ pointer;
|
typedef P_ pointer;
|
||||||
typedef std::forward_iterator_tag iterator_category;
|
typedef std::forward_iterator_tag iterator_category;
|
||||||
|
typedef std::ptrdiff_t difference_type;
|
||||||
|
|
||||||
UF_forward_iterator() : m_p(0) {}
|
UF_forward_iterator() : m_p(0) {}
|
||||||
UF_forward_iterator(PTR_ p) : m_p(p) {}
|
UF_forward_iterator(PTR_ p) : m_p(p) {}
|
||||||
|
|
@ -104,6 +106,7 @@ public:
|
||||||
typedef T value_type;
|
typedef T value_type;
|
||||||
typedef T& reference;
|
typedef T& reference;
|
||||||
typedef const T& const_reference;
|
typedef const T& const_reference;
|
||||||
|
typedef std::forward_iterator_tag iterator_category;
|
||||||
|
|
||||||
typedef internal::UF_forward_iterator< pointer, T, T&, T*> iterator;
|
typedef internal::UF_forward_iterator< pointer, T, T&, T*> iterator;
|
||||||
typedef iterator handle;
|
typedef iterator handle;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue