Skip to content
This repository has been archived by the owner on Mar 26, 2020. It is now read-only.

Commit

Permalink
Change Json map/vector conversions to invoke begin() directly (#110)
Browse files Browse the repository at this point in the history
... instead of using key_type/value_type/mapped_type. Because this could
otherwise false-positive on things like std::optional, which has a value_type
member type, but is not a container.

Fixes #109.
  • Loading branch information
j4cbo authored and artwyman committed Jun 20, 2017
1 parent ed35a09 commit ec4e452
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions json11.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -107,14 +107,14 @@ class Json final {

// Implicit constructor: map-like objects (std::map, std::unordered_map, etc)
template <class M, typename std::enable_if<
std::is_constructible<std::string, typename M::key_type>::value
&& std::is_constructible<Json, typename M::mapped_type>::value,
std::is_constructible<std::string, decltype(std::declval<M>().begin()->first)>::value
&& std::is_constructible<Json, decltype(std::declval<M>().begin()->second)>::value,
int>::type = 0>
Json(const M & m) : Json(object(m.begin(), m.end())) {}

// Implicit constructor: vector-like objects (std::list, std::vector, std::set, etc)
template <class V, typename std::enable_if<
std::is_constructible<Json, typename V::value_type>::value,
std::is_constructible<Json, decltype(*std::declval<V>().begin())>::value,
int>::type = 0>
Json(const V & v) : Json(array(v.begin(), v.end())) {}

Expand Down

0 comments on commit ec4e452

Please sign in to comment.