Skip to content

Commit a024b32

Browse files
authored
Merge pull request #33 from DanielaE/fix/no-iterator-inheritance
Inheriting std::iterator is deprecated in C++17
2 parents 50d99fd + 498302a commit a024b32

File tree

1 file changed

+50
-14
lines changed

1 file changed

+50
-14
lines changed

include/boost/coroutine/asymmetric_coroutine.hpp

Lines changed: 50 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -152,12 +152,18 @@ class push_coroutine
152152
return * this;
153153
}
154154

155-
class iterator : public std::iterator< std::output_iterator_tag, void, void, void, void >
155+
class iterator
156156
{
157157
private:
158158
push_coroutine< Arg > * c_;
159159

160160
public:
161+
typedef std::output_iterator_tag iterator_category;
162+
typedef void value_type;
163+
typedef void difference_type;
164+
typedef void pointer;
165+
typedef void reference;
166+
161167
iterator() :
162168
c_( 0)
163169
{}
@@ -291,12 +297,18 @@ class push_coroutine< Arg & >
291297
return * this;
292298
}
293299

294-
class iterator : public std::iterator< std::output_iterator_tag, void, void, void, void >
300+
class iterator
295301
{
296302
private:
297303
push_coroutine< Arg & > * c_;
298304

299305
public:
306+
typedef std::output_iterator_tag iterator_category;
307+
typedef void value_type;
308+
typedef void difference_type;
309+
typedef void pointer;
310+
typedef void reference;
311+
300312
iterator() :
301313
c_( 0)
302314
{}
@@ -725,7 +737,7 @@ class pull_coroutine
725737
return impl_->get();
726738
}
727739

728-
class iterator : public std::iterator< std::input_iterator_tag, typename remove_reference< R >::type >
740+
class iterator
729741
{
730742
private:
731743
pull_coroutine< R > * c_;
@@ -754,8 +766,14 @@ class pull_coroutine
754766
}
755767

756768
public:
757-
typedef typename iterator::pointer pointer_t;
758-
typedef typename iterator::reference reference_t;
769+
typedef std::input_iterator_tag iterator_category;
770+
typedef typename remove_reference< R >::type value_type;
771+
typedef std::ptrdiff_t difference_type;
772+
typedef value_type * pointer;
773+
typedef value_type & reference;
774+
775+
typedef pointer pointer_t;
776+
typedef reference reference_t;
759777

760778
iterator() :
761779
c_( 0), val_( 0)
@@ -808,7 +826,7 @@ class pull_coroutine
808826
}
809827
};
810828

811-
class const_iterator : public std::iterator< std::input_iterator_tag, const typename remove_reference< R >::type >
829+
class const_iterator
812830
{
813831
private:
814832
pull_coroutine< R > * c_;
@@ -837,8 +855,14 @@ class pull_coroutine
837855
}
838856

839857
public:
840-
typedef typename const_iterator::pointer pointer_t;
841-
typedef typename const_iterator::reference reference_t;
858+
typedef std::input_iterator_tag iterator_category;
859+
typedef const typename remove_reference< R >::type value_type;
860+
typedef std::ptrdiff_t difference_type;
861+
typedef value_type * pointer;
862+
typedef value_type & reference;
863+
864+
typedef pointer pointer_t;
865+
typedef reference reference_t;
842866

843867
const_iterator() :
844868
c_( 0), val_( 0)
@@ -1181,7 +1205,7 @@ class pull_coroutine< R & >
11811205
R & get() const
11821206
{ return impl_->get(); }
11831207

1184-
class iterator : public std::iterator< std::input_iterator_tag, typename remove_reference< R >::type >
1208+
class iterator
11851209
{
11861210
private:
11871211
pull_coroutine< R & > * c_;
@@ -1210,8 +1234,14 @@ class pull_coroutine< R & >
12101234
}
12111235

12121236
public:
1213-
typedef typename iterator::pointer pointer_t;
1214-
typedef typename iterator::reference reference_t;
1237+
typedef std::input_iterator_tag iterator_category;
1238+
typedef typename remove_reference< R >::type value_type;
1239+
typedef std::ptrdiff_t difference_type;
1240+
typedef value_type * pointer;
1241+
typedef value_type & reference;
1242+
1243+
typedef pointer pointer_t;
1244+
typedef reference reference_t;
12151245

12161246
iterator() :
12171247
c_( 0), val_( 0)
@@ -1264,7 +1294,7 @@ class pull_coroutine< R & >
12641294
}
12651295
};
12661296

1267-
class const_iterator : public std::iterator< std::input_iterator_tag, const typename remove_reference< R >::type >
1297+
class const_iterator
12681298
{
12691299
private:
12701300
pull_coroutine< R & > * c_;
@@ -1293,8 +1323,14 @@ class pull_coroutine< R & >
12931323
}
12941324

12951325
public:
1296-
typedef typename const_iterator::pointer pointer_t;
1297-
typedef typename const_iterator::reference reference_t;
1326+
typedef std::input_iterator_tag iterator_category;
1327+
typedef const typename remove_reference< R >::type value_type;
1328+
typedef std::ptrdiff_t difference_type;
1329+
typedef value_type * pointer;
1330+
typedef value_type & reference;
1331+
1332+
typedef pointer pointer_t;
1333+
typedef reference reference_t;
12981334

12991335
const_iterator() :
13001336
c_( 0), val_( 0)

0 commit comments

Comments
 (0)