diff --git a/src/json.hpp b/src/json.hpp
index 84cf344b..87faa027 100644
--- a/src/json.hpp
+++ b/src/json.hpp
@@ -417,10 +417,10 @@ class basic_json
     inline basic_json(const number_integer_t& value)
         : m_type(value_t::number_integer), m_value(value)
     {}
-    
+
     /// create an int number to support enum type (implicit)
-    inline basic_json(int int_enum)
-	    : m_type(value_t::number_integer), m_value((NumberIntegerType)int_enum)
+    inline basic_json(const int int_enum)
+        : m_type(value_t::number_integer), m_value(static_cast<number_integer_t>(int_enum))
     {}
 
     /// create an integer number (implicit)
diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c
index 2326cae5..f456e90f 100644
--- a/src/json.hpp.re2c
+++ b/src/json.hpp.re2c
@@ -418,6 +418,11 @@ class basic_json
         : m_type(value_t::number_integer), m_value(value)
     {}
 
+    /// create an int number to support enum type (implicit)
+    inline basic_json(const int int_enum)
+        : m_type(value_t::number_integer), m_value(static_cast<number_integer_t>(int_enum))
+    {}
+
     /// create an integer number (implicit)
     template<typename T, typename
              std::enable_if<
diff --git a/test/unit.cpp b/test/unit.cpp
index 21848ebe..0e84d235 100644
--- a/test/unit.cpp
+++ b/test/unit.cpp
@@ -8529,4 +8529,16 @@ TEST_CASE("regression tests")
             CHECK(json(json::number_float_t(INFINITY)) == json());
         }
     }
+
+    SECTION("pull request #71 - handle enum type")
+    {
+        enum { t = 0 };
+        json j = json::array();
+        j.push_back(t);
+
+        j.push_back(json::object(
+        {
+            {"game_type", t}
+        }));
+    }
 }