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>
|
||||
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));
|
||||
}
|
||||
|
||||
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 {
|
||||
|
||||
template<typename Category, typename Tp, typename Distance = std::ptrdiff_t,
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
#include <CGAL/basic.h>
|
||||
#include <CGAL/memory.h>
|
||||
#include <cstddef>
|
||||
#include <iterator>
|
||||
|
||||
namespace CGAL {
|
||||
|
||||
|
|
@ -39,6 +40,7 @@ public:
|
|||
typedef R_ reference;
|
||||
typedef P_ pointer;
|
||||
typedef std::forward_iterator_tag iterator_category;
|
||||
typedef std::ptrdiff_t difference_type;
|
||||
|
||||
UF_forward_iterator() : m_p(0) {}
|
||||
UF_forward_iterator(PTR_ p) : m_p(p) {}
|
||||
|
|
@ -104,6 +106,7 @@ public:
|
|||
typedef T value_type;
|
||||
typedef T& reference;
|
||||
typedef const T& const_reference;
|
||||
typedef std::forward_iterator_tag iterator_category;
|
||||
|
||||
typedef internal::UF_forward_iterator< pointer, T, T&, T*> iterator;
|
||||
typedef iterator handle;
|
||||
|
|
|
|||
Loading…
Reference in New Issue