17#include <nlohmann/detail/macro_scope.hpp>
19NLOHMANN_JSON_NAMESPACE_BEGIN
24using uncvref_t =
typename std::remove_cv<typename std::remove_reference<T>::type>::type;
29using std::enable_if_t;
30using std::index_sequence;
31using std::make_index_sequence;
32using std::index_sequence_for;
37template<
bool B,
typename T =
void>
38using enable_if_t =
typename std::enable_if<B, T>::type;
64template <
typename T, T... Ints>
68 static constexpr std::size_t size()
noexcept
70 return sizeof...(Ints);
79template <
size_t... Ints>
82namespace utility_internal
85template <
typename Seq,
size_t SeqSize,
size_t Rem>
89template <
typename T, T... Ints,
size_t SeqSize>
95template <
typename T, T... Ints,
size_t SeqSize>
98 using type =
integer_sequence < T, Ints..., (Ints + SeqSize)..., 2 * SeqSize >;
103template <
typename T,
size_t N>
107 typename Extend <
typename Gen < T, N / 2 >::type, N / 2, N % 2 >::type;
125template <
typename T, T N>
126using make_integer_sequence =
typename utility_internal::Gen<T, N>::type;
134using make_index_sequence = make_integer_sequence<size_t, N>;
141template <
typename... Ts>
142using index_sequence_for = make_index_sequence<
sizeof...(Ts)>;
156 static JSON_INLINE_VARIABLE
constexpr T value{};
159#ifndef JSON_HAS_CPP_17
161 constexpr T static_const<T>::value;
164template<
typename T,
typename... Args>
165constexpr std::array<T,
sizeof...(Args)> make_array(Args&& ... args)
167 return std::array<T,
sizeof...(Args)> {{
static_cast<T
>(std::forward<Args>(args))...}};
171NLOHMANN_JSON_NAMESPACE_END
detail namespace with internal helper functions
定义 from_json.hpp:43