25 using value_type = BasicJsonType;
27 json_ref(value_type&& value)
28 : owned_value(std::move(value))
31 json_ref(
const value_type& value)
35 json_ref(std::initializer_list<json_ref> init)
41 enable_if_t<std::is_constructible<value_type, Args...>::value,
int> = 0 >
42 json_ref(Args && ... args)
43 : owned_value(std::forward<Args>(args)...)
47 json_ref(json_ref&&)
noexcept =
default;
48 json_ref(
const json_ref&) =
delete;
49 json_ref& operator=(
const json_ref&) =
delete;
50 json_ref& operator=(json_ref&&) =
delete;
51 ~json_ref() =
default;
53 value_type moved_or_copied()
const
55 if (value_ref ==
nullptr)
57 return std::move(owned_value);
62 value_type
const& operator*()
const
64 return value_ref ? *value_ref : owned_value;
67 value_type
const* operator->()
const
73 mutable value_type owned_value =
nullptr;
74 value_type
const* value_ref =
nullptr;