16 using value_type = BasicJsonType;
18 json_ref(value_type&& value)
19 : owned_value(std::move(value))
22 json_ref(
const value_type& value)
26 json_ref(std::initializer_list<json_ref> init)
32 enable_if_t<std::is_constructible<value_type, Args...>::value,
int> = 0 >
33 json_ref(Args && ... args)
34 : owned_value(std::forward<Args>(args)...)
38 json_ref(json_ref&&)
noexcept =
default;
39 json_ref(
const json_ref&) =
delete;
40 json_ref& operator=(
const json_ref&) =
delete;
41 json_ref& operator=(json_ref&&) =
delete;
42 ~json_ref() =
default;
44 value_type moved_or_copied()
const
46 if (value_ref ==
nullptr)
48 return std::move(owned_value);
53 value_type
const& operator*()
const
55 return value_ref ? *value_ref : owned_value;
58 value_type
const* operator->()
const
64 mutable value_type owned_value =
nullptr;
65 value_type
const* value_ref =
nullptr;