Fix and add test's for SFINAE problem
This commit is contained in:
parent
06ccd43a2a
commit
e26a2904fc
3 changed files with 13 additions and 2 deletions
|
@ -4010,7 +4010,7 @@ class basic_json
|
||||||
@since version 3.6.0
|
@since version 3.6.0
|
||||||
*/
|
*/
|
||||||
template<typename KeyT, typename std::enable_if<
|
template<typename KeyT, typename std::enable_if<
|
||||||
not std::is_same<KeyT, json_pointer>::value, int>::type = 0>
|
not std::is_same<typename std::decay<KeyT>::type, json_pointer>::value, int>::type = 0>
|
||||||
bool contains(KeyT && key) const
|
bool contains(KeyT && key) const
|
||||||
{
|
{
|
||||||
return is_object() and m_value.object->find(std::forward<KeyT>(key)) != m_value.object->end();
|
return is_object() and m_value.object->find(std::forward<KeyT>(key)) != m_value.object->end();
|
||||||
|
|
|
@ -18445,7 +18445,7 @@ class basic_json
|
||||||
@since version 3.6.0
|
@since version 3.6.0
|
||||||
*/
|
*/
|
||||||
template<typename KeyT, typename std::enable_if<
|
template<typename KeyT, typename std::enable_if<
|
||||||
not std::is_same<KeyT, json_pointer>::value, int>::type = 0>
|
not std::is_same<typename std::decay<KeyT>::type, json_pointer>::value, int>::type = 0>
|
||||||
bool contains(KeyT && key) const
|
bool contains(KeyT && key) const
|
||||||
{
|
{
|
||||||
return is_object() and m_value.object->find(std::forward<KeyT>(key)) != m_value.object->end();
|
return is_object() and m_value.object->find(std::forward<KeyT>(key)) != m_value.object->end();
|
||||||
|
|
|
@ -1809,6 +1809,17 @@ TEST_CASE("regression tests")
|
||||||
json j = smallest;
|
json j = smallest;
|
||||||
CHECK(j.dump() == std::to_string(smallest));
|
CHECK(j.dump() == std::to_string(smallest));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("issue #1727 - Contains with non-const lvalue json_pointer picks the wrong overload")
|
||||||
|
{
|
||||||
|
json j = {{"root", {{"settings", {{"logging", true}}}}}};
|
||||||
|
|
||||||
|
auto jptr1 = "/root/settings/logging"_json_pointer;
|
||||||
|
auto jptr2 = json::json_pointer{"/root/settings/logging"};
|
||||||
|
|
||||||
|
CHECK(j.contains(jptr1));
|
||||||
|
CHECK(j.contains(jptr2));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if not defined(JSON_NOEXCEPTION)
|
#if not defined(JSON_NOEXCEPTION)
|
||||||
|
|
Loading…
Reference in a new issue