| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | 
							- //     __ _____ _____ _____
 
- //  __|  |   __|     |   | |  JSON for Modern C++
 
- // |  |  |__   |  |  | | | |  version 3.11.3
 
- // |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
- //
 
- // SPDX-FileCopyrightText: 2013-2023 Niels Lohmann <https://nlohmann.me>
 
- // SPDX-License-Identifier: MIT
 
- #pragma once
 
- #include <initializer_list>
 
- #include <utility>
 
- #include <nlohmann/detail/abi_macros.hpp>
 
- #include <nlohmann/detail/meta/type_traits.hpp>
 
- NLOHMANN_JSON_NAMESPACE_BEGIN
 
- namespace detail
 
- {
 
- template<typename BasicJsonType>
 
- class json_ref
 
- {
 
-   public:
 
-     using value_type = BasicJsonType;
 
-     json_ref(value_type&& value)
 
-         : owned_value(std::move(value))
 
-     {}
 
-     json_ref(const value_type& value)
 
-         : value_ref(&value)
 
-     {}
 
-     json_ref(std::initializer_list<json_ref> init)
 
-         : owned_value(init)
 
-     {}
 
-     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)...)
 
-     {}
 
-     // class should be movable only
 
-     json_ref(json_ref&&) noexcept = 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
 
-     {
 
-         if (value_ref == nullptr)
 
-         {
 
-             return std::move(owned_value);
 
-         }
 
-         return *value_ref;
 
-     }
 
-     value_type const& operator*() const
 
-     {
 
-         return value_ref ? *value_ref : owned_value;
 
-     }
 
-     value_type const* operator->() const
 
-     {
 
-         return &** this;
 
-     }
 
-   private:
 
-     mutable value_type owned_value = nullptr;
 
-     value_type const* value_ref = nullptr;
 
- };
 
- }  // namespace detail
 
- NLOHMANN_JSON_NAMESPACE_END
 
 
  |