summaryrefslogtreecommitdiff
path: root/include/lib/modernjson/detail/json_ref.hpp
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2018-11-26 09:06:31 +0100
committerDaniel Friesel <derf@finalrewind.org>2018-11-26 09:06:31 +0100
commit1542f34f0e0fc53324f6fdc5905f4b77b252a789 (patch)
treed2126bc53f8759c36809ff25b9ae3a19fd7aa362 /include/lib/modernjson/detail/json_ref.hpp
parente7711c06640f098323cab80934c198090e9120a3 (diff)
update nlohmann modernjson to v3.4 (with bson support)
Diffstat (limited to 'include/lib/modernjson/detail/json_ref.hpp')
-rw-r--r--include/lib/modernjson/detail/json_ref.hpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/include/lib/modernjson/detail/json_ref.hpp b/include/lib/modernjson/detail/json_ref.hpp
index 8285be2..c44aa66 100644
--- a/include/lib/modernjson/detail/json_ref.hpp
+++ b/include/lib/modernjson/detail/json_ref.hpp
@@ -3,6 +3,8 @@
#include <initializer_list>
#include <utility>
+#include <lib/modernjson/detail/meta/type_traits.hpp>
+
namespace nlohmann
{
namespace detail
@@ -25,15 +27,19 @@ class json_ref
: owned_value(init), value_ref(&owned_value), is_rvalue(true)
{}
- template<class... Args>
- json_ref(Args&& ... args)
- : owned_value(std::forward<Args>(args)...), value_ref(&owned_value), is_rvalue(true)
- {}
+ template <
+ class... Args,
+ enable_if_t<std::is_constructible<value_type, Args...>::value, int> = 0 >
+ json_ref(Args && ... args)
+ : owned_value(std::forward<Args>(args)...), value_ref(&owned_value),
+ is_rvalue(true) {}
// class should be movable only
json_ref(json_ref&&) = default;
json_ref(const json_ref&) = delete;
json_ref& operator=(const json_ref&) = delete;
+ json_ref& operator=(json_ref&&) = delete;
+ ~json_ref() = default;
value_type moved_or_copied() const
{
@@ -59,5 +65,5 @@ class json_ref
value_type* value_ref = nullptr;
const bool is_rvalue;
};
-}
-}
+} // namespace detail
+} // namespace nlohmann