Skip to content

Commit

Permalink
add forwarding references to json_ref constructor
Browse files Browse the repository at this point in the history
fixes #805
  • Loading branch information
theodelrieu committed Oct 28, 2017
1 parent 8e067c0 commit 4b46abf
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/json.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
24 changes: 24 additions & 0 deletions test/src/unit-regression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down Expand Up @@ -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);
}
}

0 comments on commit 4b46abf

Please sign in to comment.