diff --git a/src/json.hpp b/src/json.hpp
index 80dfa3eb..fd4bce2e 100644
--- a/src/json.hpp
+++ b/src/json.hpp
@@ -405,7 +405,7 @@ class basic_json
     /// create an object (implicit)
     template <class V, typename
               std::enable_if<
-                  std::is_constructible<string_t, typename V::key_type>::value and
+                  std::is_constructible<typename object_t::key_type, typename V::key_type>::value and
                   std::is_constructible<basic_json, typename V::mapped_type>::value, int>::type
               = 0>
     inline basic_json(const V& value)
@@ -808,7 +808,7 @@ class basic_json
     /// get an object (explicit)
     template <class T, typename
               std::enable_if<
-                  std::is_constructible<typename T::key_type, string_t>::value and
+                  std::is_constructible<typename T::key_type, typename object_t::key_type>::value and
                   std::is_constructible<basic_json, typename T::mapped_type>::value, int>::type
               = 0>
     inline T get() const
@@ -842,7 +842,7 @@ class basic_json
     /// get a string (explicit)
     template <typename T, typename
               std::enable_if<
-                  std::is_constructible<string_t, T>::value, int>::type
+                  std::is_constructible<T, string_t>::value, int>::type
               = 0>
     inline T get() const
     {
diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c
index 78fc7c0d..44b471f9 100644
--- a/src/json.hpp.re2c
+++ b/src/json.hpp.re2c
@@ -405,7 +405,7 @@ class basic_json
     /// create an object (implicit)
     template <class V, typename
               std::enable_if<
-                  std::is_constructible<string_t, typename V::key_type>::value and
+                  std::is_constructible<typename object_t::key_type, typename V::key_type>::value and
                   std::is_constructible<basic_json, typename V::mapped_type>::value, int>::type
               = 0>
     inline basic_json(const V& value)
@@ -808,7 +808,7 @@ class basic_json
     /// get an object (explicit)
     template <class T, typename
               std::enable_if<
-                  std::is_constructible<typename T::key_type, string_t>::value and
+                  std::is_constructible<typename T::key_type, typename object_t::key_type>::value and
                   std::is_constructible<basic_json, typename T::mapped_type>::value, int>::type
               = 0>
     inline T get() const
@@ -842,7 +842,7 @@ class basic_json
     /// get a string (explicit)
     template <typename T, typename
               std::enable_if<
-                  std::is_constructible<string_t, T>::value, int>::type
+                  std::is_constructible<T, string_t>::value, int>::type
               = 0>
     inline T get() const
     {