Skip to content

Commit

Permalink
Add to_json() for std::vector<bool>::reference
Browse files Browse the repository at this point in the history
  • Loading branch information
falbrechtskirchinger committed Jun 13, 2022
1 parent af34396 commit 475d132
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 0 deletions.
7 changes: 7 additions & 0 deletions include/nlohmann/detail/conversions/to_json.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,13 @@ inline void to_json(BasicJsonType& j, T b) noexcept
external_constructor<value_t::boolean>::construct(j, b);
}

template<typename BasicJsonType,
enable_if_t<std::is_convertible<const std::vector<bool>::reference&, typename BasicJsonType::boolean_t>::value, int> = 0>
inline void to_json(BasicJsonType& j, const std::vector<bool>::reference& b) noexcept
{
external_constructor<value_t::boolean>::construct(j, static_cast<typename BasicJsonType::boolean_t>(b));
}

template<typename BasicJsonType, typename CompatibleString,
enable_if_t<std::is_constructible<typename BasicJsonType::string_t, CompatibleString>::value, int> = 0>
inline void to_json(BasicJsonType& j, const CompatibleString& s)
Expand Down
7 changes: 7 additions & 0 deletions single_include/nlohmann/json.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -5253,6 +5253,13 @@ inline void to_json(BasicJsonType& j, T b) noexcept
external_constructor<value_t::boolean>::construct(j, b);
}

template<typename BasicJsonType,
enable_if_t<std::is_convertible<const std::vector<bool>::reference&, typename BasicJsonType::boolean_t>::value, int> = 0>
inline void to_json(BasicJsonType& j, const std::vector<bool>::reference& b) noexcept
{
external_constructor<value_t::boolean>::construct(j, static_cast<typename BasicJsonType::boolean_t>(b));
}

template<typename BasicJsonType, typename CompatibleString,
enable_if_t<std::is_constructible<typename BasicJsonType::string_t, CompatibleString>::value, int> = 0>
inline void to_json(BasicJsonType& j, const CompatibleString& s)
Expand Down
7 changes: 7 additions & 0 deletions tests/src/unit-constructor1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -474,6 +474,13 @@ TEST_CASE("constructors")
json j(false);
CHECK(j.type() == json::value_t::boolean);
}

SECTION("from std::vector<bool>::refrence")
{
std::vector<bool> v{true};
json j(v[0]);
CHECK(j.type() == json::value_t::boolean);
}
}

SECTION("create a binary (explicit)")
Expand Down

0 comments on commit 475d132

Please sign in to comment.