From faae8bb843037a4aac751da4848a46296ce2e973 Mon Sep 17 00:00:00 2001
From: Niels <niels.lohmann@gmail.com>
Date: Mon, 27 Apr 2015 23:09:51 +0200
Subject: [PATCH] some typename fix

---
 appveyor.yml      |  2 +-
 src/json.hpp      | 20 ++++++++++----------
 src/json.hpp.re2c | 20 ++++++++++----------
 3 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/appveyor.yml b/appveyor.yml
index 237d284c..a8a97027 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -1,5 +1,5 @@
 version: '{build}'
-os: Visual Studio 2015 CTP
+os: Visual Studio 2015 CTP 6
 init: []
 install: []
 build_script:
diff --git a/src/json.hpp b/src/json.hpp
index 54ee2ebd..844a0284 100644
--- a/src/json.hpp
+++ b/src/json.hpp
@@ -329,10 +329,10 @@ class basic_json
     /// create an array (implicit)
     template <class V, typename
               std::enable_if<
-                  not std::is_same<V, basic_json::iterator>::value and
-                  not std::is_same<V, basic_json::const_iterator>::value and
-                  not std::is_same<V, basic_json::reverse_iterator>::value and
-                  not std::is_same<V, basic_json::const_reverse_iterator>::value and
+                  not std::is_same<V, typename basic_json::iterator>::value and
+                  not std::is_same<V, typename basic_json::const_iterator>::value and
+                  not std::is_same<V, typename basic_json::reverse_iterator>::value and
+                  not std::is_same<V, typename basic_json::const_reverse_iterator>::value and
                   not std::is_same<V, typename array_t::iterator>::value and
                   not std::is_same<V, typename array_t::const_iterator>::value and
                   std::is_constructible<basic_json, typename V::value_type>::value, int>::type
@@ -493,8 +493,8 @@ class basic_json
     /// construct a JSON container given an iterator range
     template <class T, typename
               std::enable_if<
-                  std::is_same<T, basic_json::iterator>::value or
-                  std::is_same<T, basic_json::const_iterator>::value
+                  std::is_same<T, typename basic_json::iterator>::value or
+                  std::is_same<T, typename basic_json::const_iterator>::value
                   , int>::type
               = 0>
     inline basic_json(T first, T last)
@@ -1198,8 +1198,8 @@ class basic_json
     /// remove element given an iterator
     template <class T, typename
               std::enable_if<
-                  std::is_same<T, basic_json::iterator>::value or
-                  std::is_same<T, basic_json::const_iterator>::value
+                  std::is_same<T, typename basic_json::iterator>::value or
+                  std::is_same<T, typename basic_json::const_iterator>::value
                   , int>::type
               = 0>
     inline T erase(T pos)
@@ -1258,8 +1258,8 @@ class basic_json
     /// remove elements given an iterator range
     template <class T, typename
               std::enable_if<
-                  std::is_same<T, basic_json::iterator>::value or
-                  std::is_same<T, basic_json::const_iterator>::value
+                  std::is_same<T, typename basic_json::iterator>::value or
+                  std::is_same<T, typename basic_json::const_iterator>::value
                   , int>::type
               = 0>
     inline T erase(T first, T last)
diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c
index d3ee8ebb..ba6d5558 100644
--- a/src/json.hpp.re2c
+++ b/src/json.hpp.re2c
@@ -329,10 +329,10 @@ class basic_json
     /// create an array (implicit)
     template <class V, typename
               std::enable_if<
-                  not std::is_same<V, basic_json::iterator>::value and
-                  not std::is_same<V, basic_json::const_iterator>::value and
-                  not std::is_same<V, basic_json::reverse_iterator>::value and
-                  not std::is_same<V, basic_json::const_reverse_iterator>::value and
+                  not std::is_same<V, typename basic_json::iterator>::value and
+                  not std::is_same<V, typename basic_json::const_iterator>::value and
+                  not std::is_same<V, typename basic_json::reverse_iterator>::value and
+                  not std::is_same<V, typename basic_json::const_reverse_iterator>::value and
                   not std::is_same<V, typename array_t::iterator>::value and
                   not std::is_same<V, typename array_t::const_iterator>::value and
                   std::is_constructible<basic_json, typename V::value_type>::value, int>::type
@@ -493,8 +493,8 @@ class basic_json
     /// construct a JSON container given an iterator range
     template <class T, typename
               std::enable_if<
-                  std::is_same<T, basic_json::iterator>::value or
-                  std::is_same<T, basic_json::const_iterator>::value
+                  std::is_same<T, typename basic_json::iterator>::value or
+                  std::is_same<T, typename basic_json::const_iterator>::value
                   , int>::type
               = 0>
     inline basic_json(T first, T last)
@@ -1198,8 +1198,8 @@ class basic_json
     /// remove element given an iterator
     template <class T, typename
               std::enable_if<
-                  std::is_same<T, basic_json::iterator>::value or
-                  std::is_same<T, basic_json::const_iterator>::value
+                  std::is_same<T, typename basic_json::iterator>::value or
+                  std::is_same<T, typename basic_json::const_iterator>::value
                   , int>::type
               = 0>
     inline T erase(T pos)
@@ -1258,8 +1258,8 @@ class basic_json
     /// remove elements given an iterator range
     template <class T, typename
               std::enable_if<
-                  std::is_same<T, basic_json::iterator>::value or
-                  std::is_same<T, basic_json::const_iterator>::value
+                  std::is_same<T, typename basic_json::iterator>::value or
+                  std::is_same<T, typename basic_json::const_iterator>::value
                   , int>::type
               = 0>
     inline T erase(T first, T last)