add forwarding references to json_ref constructor

fixes #805
pull/807/head
Théo DELRIEU 2017-10-28 14:22:57 +02:00
parent 8e067c0c3c
commit 4b46abf97c
No known key found for this signature in database
GPG Key ID: CDC9DE164D97A180
2 changed files with 25 additions and 1 deletions

View File

@ -6789,7 +6789,7 @@ class json_ref
{}
template <class... Args>
json_ref(Args... args)
json_ref(Args&&... args)
: owned_value(std::forward<Args>(args)...),
value_ref(&owned_value),
is_rvalue(true)

View File

@ -36,6 +36,22 @@ using nlohmann::json;
#include <list>
#include <cstdio>
namespace
{
struct nocopy
{
nocopy() = default;
nocopy(const nocopy &) = delete;
int val = 0;
friend void to_json(json& j, const nocopy& n)
{
j = {{"val", n.val}};
}
};
}
TEST_CASE("regression tests")
{
SECTION("issue #60 - Double quotation mark is not parsed correctly")
@ -1282,4 +1298,12 @@ TEST_CASE("regression tests")
}
}
*/
SECTION("issue #805 - copy constructor is used with std::initializer_list constructor.")
{
nocopy n;
json j;
j = {{"nocopy", n}};
CHECK(j["nocopy"]["val"] == 0);
}
}