diff --git a/include/nlohmann/detail/conversions/from_json.hpp b/include/nlohmann/detail/conversions/from_json.hpp index 06b064207..e7f3cdd1a 100644 --- a/include/nlohmann/detail/conversions/from_json.hpp +++ b/include/nlohmann/detail/conversions/from_json.hpp @@ -325,9 +325,9 @@ inline void from_json(const BasicJsonType& j, typename BasicJsonType::binary_t& bin = *j.template get_ptr(); } -template < typename BasicJsonType, typename ConstructibleObjectType, - enable_if_t < is_constructible_object_type::value&& - !std::is_enum::value, int > = 0 > +template::value&& + !std::is_enum::value, int> = 0> inline void from_json(const BasicJsonType& j, ConstructibleObjectType& obj) { if (JSON_HEDLEY_UNLIKELY(!j.is_object())) @@ -348,10 +348,10 @@ inline void from_json(const BasicJsonType& j, ConstructibleObjectType& obj) obj = std::move(ret); } -template < typename BasicJsonType, typename Key, typename Value, typename Compare, typename Allocator, - enable_if_t < is_constructible_object_type>::value&& - is_compatible_object_type>::value&& - std::is_enum::value, int > = 0 > +template >::value&& + is_compatible_object_type>::value&& + std::is_enum::value, int> = 0> inline void from_json(const BasicJsonType& j, std::map& m) { if (JSON_HEDLEY_UNLIKELY(!j.is_object())) @@ -361,7 +361,7 @@ inline void from_json(const BasicJsonType& j, std::map()); + m.emplace(string_to_enum(json(p.key()),Key()), p.value().template get()); } } @@ -459,7 +459,7 @@ auto from_json(BasicJsonType&& j, TupleRelated&& t) template < typename BasicJsonType, typename Key, typename Value, typename Compare, typename Allocator, typename = enable_if_t < !std::is_constructible < typename BasicJsonType::string_t, Key >::value && - !is_compatible_object_type>::value >> + !is_compatible_object_type>::value>> inline void from_json(const BasicJsonType& j, std::map& m) { if (JSON_HEDLEY_UNLIKELY(!j.is_array())) diff --git a/include/nlohmann/detail/conversions/to_json.hpp b/include/nlohmann/detail/conversions/to_json.hpp index 30aed02e5..2b2e6ea0c 100644 --- a/include/nlohmann/detail/conversions/to_json.hpp +++ b/include/nlohmann/detail/conversions/to_json.hpp @@ -270,7 +270,8 @@ struct external_constructor template < typename BasicJsonType, typename CompatibleObjectType, enable_if_t < !std::is_same::value&& - is_compatible_object_type::value&& !is_basic_json::value&& + is_compatible_object_type::value&& + !is_basic_json::value&& !std::is_enum::value, int > = 0 > static void construct(BasicJsonType& j, const CompatibleObjectType& obj) { @@ -409,7 +410,8 @@ inline void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr) } template < typename BasicJsonType, typename CompatibleObjectType, - enable_if_t < is_compatible_object_type::value&& !is_basic_json::value&& + enable_if_t < is_compatible_object_type::value&& + !is_basic_json::value&& !std::is_enum::value, int > = 0 > inline void to_json(BasicJsonType& j, const CompatibleObjectType& obj) { @@ -417,8 +419,8 @@ inline void to_json(BasicJsonType& j, const CompatibleObjectType& obj) } template < typename BasicJsonType, typename Key, typename Value, - enable_if_t < (is_compatible_object_type>::value)&& - (!is_basic_json>::value)&& + enable_if_t < is_compatible_object_type>::value&& + !is_basic_json>::value&& std::is_enum::value, int > = 0 > inline void to_json(BasicJsonType& j, const std::map& obj) { diff --git a/include/nlohmann/detail/meta/type_traits.hpp b/include/nlohmann/detail/meta/type_traits.hpp index ccef9e062..dab3e95ff 100644 --- a/include/nlohmann/detail/meta/type_traits.hpp +++ b/include/nlohmann/detail/meta/type_traits.hpp @@ -386,7 +386,7 @@ struct is_constructible_object_type_impl < (std::is_move_assignable::value || std::is_copy_assignable::value) && (is_constructible::value && + typename object_t::key_type>::value && std::is_same < typename object_t::mapped_type, typename ConstructibleObjectType::mapped_type >::value)) ||