aboutsummaryrefslogtreecommitdiff
path: root/src/scintilla_backports/6421_fd2f856b8d58.patch
diff options
context:
space:
mode:
Diffstat (limited to 'src/scintilla_backports/6421_fd2f856b8d58.patch')
-rw-r--r--src/scintilla_backports/6421_fd2f856b8d58.patch68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/scintilla_backports/6421_fd2f856b8d58.patch b/src/scintilla_backports/6421_fd2f856b8d58.patch
new file mode 100644
index 00000000..9e354864
--- /dev/null
+++ b/src/scintilla_backports/6421_fd2f856b8d58.patch
@@ -0,0 +1,68 @@
+# HG changeset patch
+# User Greg Smith
+# Date 1513111541 -39600
+# Node ID fd2f856b8d582df2e3e60073721a84b9f464a72b
+# Parent 2286dd5fa6259c67cc8ce0d4c39b1c2e6f85ff1f
+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.
+
+diff -r 2286dd5fa625 -r fd2f856b8d58 src/Document.cxx
+--- a/src/Document.cxx Tue Nov 21 16:16:25 2017 +1100
++++ b/src/Document.cxx Wed Dec 13 07:45:41 2017 +1100
+@@ -2600,8 +2600,14 @@
+
+ #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 @@
+
+ // 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 @@
+ 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 @@
+
+ // 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 {