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} + })); + } }