From 0c96d06fc321d3667dfddc1d65477b99dce08acb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Wed, 13 Jun 2018 14:34:58 +0200 Subject: [PATCH] Removed usage of CGAL::iterator from join iterators They define (almost) all the typedefs in the class anyway Also use result_of() to deduce the result type instead of assuming that a typedef 'result_type' will be present. --- STL_Extension/include/CGAL/iterator.h | 96 ++++++++++++++------------- 1 file changed, 49 insertions(+), 47 deletions(-) diff --git a/STL_Extension/include/CGAL/iterator.h b/STL_Extension/include/CGAL/iterator.h index bf760047f9a..adc95996dd1 100644 --- a/STL_Extension/include/CGAL/iterator.h +++ b/STL_Extension/include/CGAL/iterator.h @@ -30,18 +30,19 @@ #include -#include #include -#include -#include -#include +#include +#include +#include #include +#include + #include #include #include -#include - +#include +#include namespace CGAL { @@ -656,20 +657,19 @@ bool operator!=(const Filter_iterator& it1, { return !(it1 == it2); } template -class Join_input_iterator_1 : public -CGAL::iterator::iterator_category, - typename Op::result_type, - typename std::iterator_traits::difference_type, - typename Op::result_type*, - typename Op::result_type&> -{ -public: - typedef Join_input_iterator_1 Self; - typedef typename Op::result_type value_type; - typedef typename std::iterator_traits::difference_type difference_type; - typedef value_type* pointer; - typedef value_type& reference; - +class Join_input_iterator_1 +{ + typedef Join_input_iterator_1 Self; + + typedef typename std::iterator_traits::value_type arg_type; + +public: + typedef typename std::iterator_traits::iterator_category iterator_category; + typedef typename cpp11::result_of::type value_type; + typedef typename std::iterator_traits::difference_type difference_type; + typedef value_type* pointer; + typedef value_type& reference; + protected: I1 i1; Op op; @@ -742,20 +742,20 @@ public: }; template -class Join_input_iterator_2 : public -CGAL::iterator::iterator_category, - typename Op::result_type, - typename std::iterator_traits::difference_type, - typename Op::result_type*, - typename Op::result_type&> -{ -public: - typedef Join_input_iterator_2 Self; - typedef typename Op::result_type value_type; - typedef typename std::iterator_traits::difference_type difference_type; - typedef value_type* pointer; - typedef value_type& reference; - +class Join_input_iterator_2 +{ + typedef Join_input_iterator_2 Self; + + typedef typename std::iterator_traits::value_type arg_type_1; + typedef typename std::iterator_traits::value_type arg_type_2; + +public: + typedef typename std::iterator_traits::iterator_category iterator_category; + typedef typename cpp11::result_of::type value_type; + typedef typename std::iterator_traits::difference_type difference_type; + typedef value_type* pointer; + typedef value_type& reference; + protected: I1 i1; I2 i2; @@ -835,19 +835,21 @@ public: }; template -class Join_input_iterator_3 : public -CGAL::iterator::iterator_category, - typename Op::result_type, - typename std::iterator_traits::difference_type, - typename Op::result_type*, - typename Op::result_type&> -{ -public: - typedef Join_input_iterator_3 Self; - typedef typename Op::result_type value_type; - typedef typename std::iterator_traits::difference_type difference_type; - typedef value_type* pointer; - typedef value_type& reference; +class Join_input_iterator_3 +{ + typedef Join_input_iterator_3 Self; + + typedef typename std::iterator_traits::value_type arg_type_1; + typedef typename std::iterator_traits::value_type arg_type_2; + typedef typename std::iterator_traits::value_type arg_type_3; + +public: + typedef typename std::iterator_traits::iterator_category iterator_category; + typedef typename cpp11::result_of::type + value_type; + typedef typename std::iterator_traits::difference_type difference_type; + typedef value_type* pointer; + typedef value_type& reference; protected: I1 i1;