aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Document.cxx
diff options
context:
space:
mode:
authorGreg Smith <unknown>2017-12-13 07:45:41 +1100
committerGreg Smith <unknown>2017-12-13 07:45:41 +1100
commit31e94e0d88f15919c42f54a1579ae3240fa9a0b4 (patch)
tree336608aa7bd278db567f9b0b2be4c11f15b547e0 /src/Document.cxx
parent68530865b45906897c0d21497230bb896e047bf2 (diff)
downloadscintilla-mirror-31e94e0d88f15919c42f54a1579ae3240fa9a0b4.tar.gz
Use explicit typedefs instead of deprecated derivation from std::iterator.
This fixes a C4996 / STL4015 warning from Visual C++ 2017.5 that the std::iterator class template is deprecated in C++17.
Diffstat (limited to 'src/Document.cxx')
-rw-r--r--src/Document.cxx24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/Document.cxx b/src/Document.cxx
index 08efa9ec2..81d022097 100644
--- a/src/Document.cxx
+++ b/src/Document.cxx
@@ -2600,8 +2600,14 @@ public:
#ifndef NO_CXX11_REGEX
-class ByteIterator : public std::iterator<std::bidirectional_iterator_tag, char> {
+class ByteIterator {
public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef char value_type;
+ typedef ptrdiff_t difference_type;
+ typedef char* pointer;
+ typedef char& reference;
+
const Document *doc;
Sci::Position position;
ByteIterator(const Document *doc_ = 0, Sci::Position position_ = 0) : doc(doc_), position(position_) {
@@ -2663,7 +2669,7 @@ public:
// On Windows, report non-BMP characters as 2 separate surrogates as that
// matches wregex since it is based on wchar_t.
-class UTF8Iterator : public std::iterator<std::bidirectional_iterator_tag, wchar_t> {
+class UTF8Iterator {
// These 3 fields determine the iterator position and are used for comparisons
const Document *doc;
Sci::Position position;
@@ -2673,6 +2679,12 @@ class UTF8Iterator : public std::iterator<std::bidirectional_iterator_tag, wchar
size_t lenCharacters;
wchar_t buffered[2];
public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef wchar_t value_type;
+ typedef ptrdiff_t difference_type;
+ typedef wchar_t* pointer;
+ typedef wchar_t& reference;
+
UTF8Iterator(const Document *doc_ = 0, Sci::Position position_ = 0) :
doc(doc_), position(position_), characterIndex(0), lenBytes(0), lenCharacters(0) {
buffered[0] = 0;
@@ -2775,10 +2787,16 @@ private:
// On Unix, report non-BMP characters as single characters
-class UTF8Iterator : public std::iterator<std::bidirectional_iterator_tag, wchar_t> {
+class UTF8Iterator {
const Document *doc;
Sci::Position position;
public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef wchar_t value_type;
+ typedef ptrdiff_t difference_type;
+ typedef wchar_t* pointer;
+ typedef wchar_t& reference;
+
UTF8Iterator(const Document *doc_=0, Sci::Position position_=0) : doc(doc_), position(position_) {
}
UTF8Iterator(const UTF8Iterator &other) NOEXCEPT {