Integrated part of Patch #2839016, fixing default iterator initialization when using internal map.

diff --git a/include/json/value.h b/include/json/value.h
index 72fcabd..ce3d3cd 100644
--- a/include/json/value.h
+++ b/include/json/value.h
@@ -637,6 +637,13 @@
 # ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION
       struct IteratorState
       {
+         IteratorState() 
+            : map_(0)
+            , link_(0)
+            , itemIndex_(0)
+            , bucketIndex_(0) 
+         {
+         }
          ValueInternalMap *map_;
          ValueInternalLink *link_;
          BucketIndex itemIndex_;
@@ -729,6 +736,12 @@
 # ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION
       struct IteratorState // Must be a POD
       {
+         IteratorState() 
+            : array_(0)
+            , currentPageIndex_(0)
+            , currentItemIndex_(0) 
+         {
+         }
          ValueInternalArray *array_;
          Value **currentPageIndex_;
          unsigned int currentItemIndex_;
diff --git a/src/lib_json/json_valueiterator.inl b/src/lib_json/json_valueiterator.inl
index d6cc031..898c358 100644
--- a/src/lib_json/json_valueiterator.inl
+++ b/src/lib_json/json_valueiterator.inl
@@ -14,11 +14,15 @@
 #ifndef JSON_VALUE_USE_INTERNAL_MAP
    : current_()
    , isNull_( true )
-#else
-# error fix me // Need to handle uninitialized iterator comparison for experimental maps
-#endif
 {
 }
+#else
+   : isArray_( true )
+   , isNull_( true )
+{
+   iterator_.array_ = ValueInternalArray::IteratorState();
+}
+#endif
 
 
 #ifndef JSON_VALUE_USE_INTERNAL_MAP