diff --git a/share/qtcreator/debugger/stdtypes.py b/share/qtcreator/debugger/stdtypes.py
index 1f15c28e084628fc2b931d5ef2790bba10e57271..6b4987e723f11788db1c52fa83ce7c36c57c2ccf 100644
--- a/share/qtcreator/debugger/stdtypes.py
+++ b/share/qtcreator/debugger/stdtypes.py
@@ -554,24 +554,24 @@ def qdump__std__unordered_map(d, value):
     ptrSize = d.ptrSize()
     try:
         # gcc ~= 4.7
-        size = value["_M_element_count"]
+        size = int(value["_M_element_count"])
         start = value["_M_before_begin"]["_M_nxt"]
         offset = 0
     except:
         try:
             # libc++ (Mac)
-            size = value["_M_h"]["_M_element_count"]
+            size = int(value["_M_h"]["_M_element_count"])
             start = value["_M_h"]["_M_bbegin"]["_M_node"]["_M_nxt"]
             offset = 0
         except:
             try:
                 # gcc 4.9.1
-                size = value["_M_h"]["_M_element_count"]
+                size = int(value["_M_h"]["_M_element_count"])
                 start = value["_M_h"]["_M_before_begin"]["_M_nxt"]
                 offset = 0
             except:
                 # gcc 4.6.2
-                size = value["_M_element_count"]
+                size = int(value["_M_element_count"])
                 start = value["_M_buckets"].dereference()
                 # FIXME: Pointer-aligned?
                 offset = pairType.sizeof
@@ -579,17 +579,16 @@ def qdump__std__unordered_map(d, value):
                 # We don't know where the data is
                 d.putNumChild(0)
                 return
+
     d.putItemCount(size)
     if d.isExpanded():
         p = d.pointerValue(start)
         if d.isMapCompact(keyType, valueType):
-            with Children(d, size, childType=valueType):
+            with PairedChildren(d, size, pairType=pairType):
                 for i in d.childRange():
                     pair = d.createValue(p + ptrSize, pairType)
                     with SubItem(d, i):
-                        d.putField("iname", d.currentIName)
-                        d.putName("[%s] %s" % (i, pair["first"]))
-                        d.putValue(pair["second"])
+                        d.putPair(pair, i)
                     p = d.extractPointer(p)
         else:
             with Children(d, size, childType=pairType):
@@ -603,24 +602,24 @@ def qdump__std____debug__unordered_map(d, value):
 def qdump__std__unordered_set(d, value):
     try:
         # gcc ~= 4.7
-        size = value["_M_element_count"]
+        size = int(value["_M_element_count"])
         start = value["_M_before_begin"]["_M_nxt"]
         offset = 0
     except:
         try:
             # libc++ (Mac)
-            size = value["_M_h"]["_M_element_count"]
+            size = int(value["_M_h"]["_M_element_count"])
             start = value["_M_h"]["_M_bbegin"]["_M_node"]["_M_nxt"]
             offset = 0
         except:
             try:
                 # gcc 4.6.2
-                size = value["_M_element_count"]
+                size = int(value["_M_element_count"])
                 start = value["_M_buckets"].dereference()
                 offset = d.ptrSize()
             except:
                 # gcc 4.9.1
-                size = value["_M_h"]["_M_element_count"]
+                size = int(value["_M_h"]["_M_element_count"])
                 start = value["_M_h"]["_M_before_begin"]["_M_nxt"]
                 offset = 0
 
diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp
index f9504376428161a9ee14a78ca95a8c3f10cfea94..0e2733cd0d99765c1c3f111f24e85cf3eda804b9 100644
--- a/tests/auto/debugger/tst_dumpers.cpp
+++ b/tests/auto/debugger/tst_dumpers.cpp
@@ -4372,12 +4372,12 @@ void tst_Dumpers::dumper_data()
                     "std::unordered_map<unsigned int, unsigned int> map1;\n"
                     "map1[11] = 1;\n"
                     "map1[22] = 2;\n"
+                    "unused(&map1);\n\n"
 
                     "std::unordered_map<std::string, float> map2;\n"
                     "map2[\"11.0\"] = 11.0;\n"
                     "map2[\"22.0\"] = 22.0;\n"
-
-                    "unused(&map1);\n")
+                    "unused(&map2);\n")
 
                + Cxx11Profile()