![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/local/lib/node_modules/mediasoup/worker/deps/json/include/nlohmann/detail/ |
Upload File : |
#pragma once #include <initializer_list> #include <utility> #include <nlohmann/detail/meta/type_traits.hpp> namespace nlohmann { namespace detail { template<typename BasicJsonType> class json_ref { public: using value_type = BasicJsonType; json_ref(value_type&& value) : owned_value(std::move(value)) , value_ref(&owned_value) , is_rvalue(true) {} json_ref(const value_type& value) : value_ref(const_cast<value_type*>(&value)) , is_rvalue(false) {} json_ref(std::initializer_list<json_ref> init) : owned_value(init) , 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 { if (is_rvalue) { return std::move(*value_ref); } return *value_ref; } value_type const& operator*() const { return *static_cast<value_type const*>(value_ref); } value_type const* operator->() const { return static_cast<value_type const*>(value_ref); } private: mutable value_type owned_value = nullptr; value_type* value_ref = nullptr; const bool is_rvalue = true; }; } // namespace detail } // namespace nlohmann