diff options
-rw-r--r-- | toolkit/components/protobuf/src/google/protobuf/repeated_field.h | 41 |
1 files changed, 12 insertions, 29 deletions
diff --git a/toolkit/components/protobuf/src/google/protobuf/repeated_field.h b/toolkit/components/protobuf/src/google/protobuf/repeated_field.h index 50051831d6..29fe823360 100644 --- a/toolkit/components/protobuf/src/google/protobuf/repeated_field.h +++ b/toolkit/components/protobuf/src/google/protobuf/repeated_field.h @@ -1250,23 +1250,14 @@ namespace internal { // This code based on net/proto/proto-array-internal.h by Jeffrey Yasskin // (jyasskin@google.com). template<typename Element> -class RepeatedPtrIterator - : public std::iterator< - std::random_access_iterator_tag, Element> { +class RepeatedPtrIterator { public: typedef RepeatedPtrIterator<Element> iterator; - typedef std::iterator< - std::random_access_iterator_tag, Element> superclass; - - // Shadow the value_type in std::iterator<> because const_iterator::value_type - // needs to be T, not const T. - typedef typename remove_const<Element>::type value_type; - - // Let the compiler know that these are type names, so we don't have to - // write "typename" in front of them everywhere. - typedef typename superclass::reference reference; - typedef typename superclass::pointer pointer; - typedef typename superclass::difference_type difference_type; + typedef std::random_access_iterator_tag iterator_category; + typedef Element value_type; + typedef std::ptrdiff_t difference_type; + typedef Element* pointer; + typedef Element& reference; RepeatedPtrIterator() : it_(NULL) {} explicit RepeatedPtrIterator(void* const* it) : it_(it) {} @@ -1346,22 +1337,14 @@ class RepeatedPtrIterator // referenced by the iterator. It should either be "void *" for a mutable // iterator, or "const void *" for a constant iterator. template<typename Element, typename VoidPtr> -class RepeatedPtrOverPtrsIterator - : public std::iterator<std::random_access_iterator_tag, Element*> { +class RepeatedPtrOverPtrsIterator { public: typedef RepeatedPtrOverPtrsIterator<Element, VoidPtr> iterator; - typedef std::iterator< - std::random_access_iterator_tag, Element*> superclass; - - // Shadow the value_type in std::iterator<> because const_iterator::value_type - // needs to be T, not const T. - typedef typename remove_const<Element*>::type value_type; - - // Let the compiler know that these are type names, so we don't have to - // write "typename" in front of them everywhere. - typedef typename superclass::reference reference; - typedef typename superclass::pointer pointer; - typedef typename superclass::difference_type difference_type; + typedef std::random_access_iterator_tag iterator_category; + typedef Element value_type; + typedef std::ptrdiff_t difference_type; + typedef Element* pointer; + typedef Element& reference; RepeatedPtrOverPtrsIterator() : it_(NULL) {} explicit RepeatedPtrOverPtrsIterator(VoidPtr* it) : it_(it) {} |