work on #144
This commit is contained in:
parent
1adb9d62dd
commit
457bfc2401
4 changed files with 24 additions and 3 deletions
|
@ -398,7 +398,7 @@ $ make
|
||||||
$ ./json_unit "*"
|
$ ./json_unit "*"
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
All tests passed (3341846 assertions in 28 test cases)
|
All tests passed (3341848 assertions in 28 test cases)
|
||||||
```
|
```
|
||||||
|
|
||||||
For more information, have a look at the file [.travis.yml](https://github.com/nlohmann/json/blob/master/.travis.yml).
|
For more information, have a look at the file [.travis.yml](https://github.com/nlohmann/json/blob/master/.travis.yml).
|
||||||
|
|
|
@ -2550,7 +2550,9 @@ class basic_json
|
||||||
|
|
||||||
@tparam ValueType non-pointer type compatible to the JSON value, for
|
@tparam ValueType non-pointer type compatible to the JSON value, for
|
||||||
instance `int` for JSON integer numbers, `bool` for JSON booleans, or
|
instance `int` for JSON integer numbers, `bool` for JSON booleans, or
|
||||||
`std::vector` types for JSON arrays
|
`std::vector` types for JSON arrays. The character type of @ref string_t
|
||||||
|
as well as an initializer list of this type is excluded to avoid
|
||||||
|
ambiguities as these types implicitly convert to `std::string`.
|
||||||
|
|
||||||
@return copy of the JSON value, converted to type @a ValueType
|
@return copy of the JSON value, converted to type @a ValueType
|
||||||
|
|
||||||
|
@ -2571,6 +2573,8 @@ class basic_json
|
||||||
template<typename ValueType, typename
|
template<typename ValueType, typename
|
||||||
std::enable_if<
|
std::enable_if<
|
||||||
not std::is_pointer<ValueType>::value
|
not std::is_pointer<ValueType>::value
|
||||||
|
and not std::is_same<ValueType, typename string_t::value_type>::value
|
||||||
|
and not std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>::value
|
||||||
, int>::type = 0>
|
, int>::type = 0>
|
||||||
operator ValueType() const
|
operator ValueType() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -2550,7 +2550,9 @@ class basic_json
|
||||||
|
|
||||||
@tparam ValueType non-pointer type compatible to the JSON value, for
|
@tparam ValueType non-pointer type compatible to the JSON value, for
|
||||||
instance `int` for JSON integer numbers, `bool` for JSON booleans, or
|
instance `int` for JSON integer numbers, `bool` for JSON booleans, or
|
||||||
`std::vector` types for JSON arrays
|
`std::vector` types for JSON arrays. The character type of @ref string_t
|
||||||
|
as well as an initializer list of this type is excluded to avoid
|
||||||
|
ambiguities as these types implicitly convert to `std::string`.
|
||||||
|
|
||||||
@return copy of the JSON value, converted to type @a ValueType
|
@return copy of the JSON value, converted to type @a ValueType
|
||||||
|
|
||||||
|
@ -2571,6 +2573,8 @@ class basic_json
|
||||||
template<typename ValueType, typename
|
template<typename ValueType, typename
|
||||||
std::enable_if<
|
std::enable_if<
|
||||||
not std::is_pointer<ValueType>::value
|
not std::is_pointer<ValueType>::value
|
||||||
|
and not std::is_same<ValueType, typename string_t::value_type>::value
|
||||||
|
and not std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>::value
|
||||||
, int>::type = 0>
|
, int>::type = 0>
|
||||||
operator ValueType() const
|
operator ValueType() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -10323,6 +10323,19 @@ TEST_CASE("regression tests")
|
||||||
CHECK(j["string"] == "\u0007\u0007");
|
CHECK(j["string"] == "\u0007\u0007");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("issue #144 - implicit assignment to std::string fails")
|
||||||
|
{
|
||||||
|
json o = {{"name", "value"}};
|
||||||
|
|
||||||
|
std::string s1 = o["name"];
|
||||||
|
CHECK(s1 == "value");
|
||||||
|
|
||||||
|
std::string s2;
|
||||||
|
s2 = o["name"];
|
||||||
|
|
||||||
|
CHECK(s2 == "value");
|
||||||
|
}
|
||||||
|
|
||||||
SECTION("character following a surrogate pair is skipped")
|
SECTION("character following a surrogate pair is skipped")
|
||||||
{
|
{
|
||||||
CHECK(json::parse("\"\\ud80c\\udc60abc\"").get<json::string_t>() == u8"\U00013060abc");
|
CHECK(json::parse("\"\\ud80c\\udc60abc\"").get<json::string_t>() == u8"\U00013060abc");
|
||||||
|
|
Loading…
Reference in a new issue