diff options
Diffstat (limited to 'boost/coroutine/asymmetric_coroutine.hpp')
-rw-r--r-- | boost/coroutine/asymmetric_coroutine.hpp | 64 |
1 files changed, 50 insertions, 14 deletions
diff --git a/boost/coroutine/asymmetric_coroutine.hpp b/boost/coroutine/asymmetric_coroutine.hpp index 6a24a0b343..7a0ddf277f 100644 --- a/boost/coroutine/asymmetric_coroutine.hpp +++ b/boost/coroutine/asymmetric_coroutine.hpp @@ -152,12 +152,18 @@ public: return * this; } - class iterator : public std::iterator< std::output_iterator_tag, void, void, void, void > + class iterator { private: push_coroutine< Arg > * c_; public: + typedef std::output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + iterator() : c_( 0) {} @@ -291,12 +297,18 @@ public: return * this; } - class iterator : public std::iterator< std::output_iterator_tag, void, void, void, void > + class iterator { private: push_coroutine< Arg & > * c_; public: + typedef std::output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + iterator() : c_( 0) {} @@ -725,7 +737,7 @@ public: return impl_->get(); } - class iterator : public std::iterator< std::input_iterator_tag, typename remove_reference< R >::type > + class iterator { private: pull_coroutine< R > * c_; @@ -754,8 +766,14 @@ public: } public: - typedef typename iterator::pointer pointer_t; - typedef typename iterator::reference reference_t; + typedef std::input_iterator_tag iterator_category; + typedef typename remove_reference< R >::type value_type; + typedef std::ptrdiff_t difference_type; + typedef value_type * pointer; + typedef value_type & reference; + + typedef pointer pointer_t; + typedef reference reference_t; iterator() : c_( 0), val_( 0) @@ -808,7 +826,7 @@ public: } }; - class const_iterator : public std::iterator< std::input_iterator_tag, const typename remove_reference< R >::type > + class const_iterator { private: pull_coroutine< R > * c_; @@ -837,8 +855,14 @@ public: } public: - typedef typename const_iterator::pointer pointer_t; - typedef typename const_iterator::reference reference_t; + typedef std::input_iterator_tag iterator_category; + typedef const typename remove_reference< R >::type value_type; + typedef std::ptrdiff_t difference_type; + typedef value_type * pointer; + typedef value_type & reference; + + typedef pointer pointer_t; + typedef reference reference_t; const_iterator() : c_( 0), val_( 0) @@ -1181,7 +1205,7 @@ public: R & get() const { return impl_->get(); } - class iterator : public std::iterator< std::input_iterator_tag, typename remove_reference< R >::type > + class iterator { private: pull_coroutine< R & > * c_; @@ -1210,8 +1234,14 @@ public: } public: - typedef typename iterator::pointer pointer_t; - typedef typename iterator::reference reference_t; + typedef std::input_iterator_tag iterator_category; + typedef typename remove_reference< R >::type value_type; + typedef std::ptrdiff_t difference_type; + typedef value_type * pointer; + typedef value_type & reference; + + typedef pointer pointer_t; + typedef reference reference_t; iterator() : c_( 0), val_( 0) @@ -1264,7 +1294,7 @@ public: } }; - class const_iterator : public std::iterator< std::input_iterator_tag, const typename remove_reference< R >::type > + class const_iterator { private: pull_coroutine< R & > * c_; @@ -1293,8 +1323,14 @@ public: } public: - typedef typename const_iterator::pointer pointer_t; - typedef typename const_iterator::reference reference_t; + typedef std::input_iterator_tag iterator_category; + typedef const typename remove_reference< R >::type value_type; + typedef std::ptrdiff_t difference_type; + typedef value_type * pointer; + typedef value_type & reference; + + typedef pointer pointer_t; + typedef reference reference_t; const_iterator() : c_( 0), val_( 0) |