* \see EnumIterator, ReverseEnumIterator
*/
template <typename EnumType>
-class EnumIteratorBase : public std::iterator<std::bidirectional_iterator_tag, EnumType>
+class EnumIteratorBase
{
protected:
#if HAVE_STD_UNDERLYING_TYPE
#endif
public:
+ using iterator_category = std::bidirectional_iterator_tag;
+ using value_type = EnumType;
+ using difference_type = std::ptrdiff_t;
+ using pointer = EnumType *;
+ using reference = EnumType &;
+
explicit EnumIteratorBase(EnumType e) : current(static_cast<iterator_type>(e)) {}
bool operator==(const EnumIteratorBase &i) const {
* Please note that any operation on the underlying SBuf may invalidate
* all iterators over it, resulting in undefined behavior by them.
*/
-class SBufIterator : public std::iterator<std::input_iterator_tag, char>
+class SBufIterator
{
public:
+ // iterator traits
+ using iterator_category = std::input_iterator_tag;
+ using value_type = char;
+ using difference_type = std::ptrdiff_t;
+ using pointer = char*;
+ using reference = char&;
+
friend class SBuf;
typedef MemBlob::size_type size_type;
bool operator==(const SBufIterator &s) const;