1 #pragma once
2 
3 #include <nlohmann/detail/iterators/primitive_iterator.hpp>
4 
5 namespace nlohmann
6 {
7 namespace detail
8 {
9 /*!
10 @brief an iterator value
11 
12 @note This structure could easily be a union, but MSVC currently does not allow
13 unions members with complex constructors, see https://github.com/nlohmann/json/pull/105.
14 */
15 template<typename BasicJsonType> struct internal_iterator
16 {
17     /// iterator for JSON objects
18     typename BasicJsonType::object_t::iterator object_iterator {};
19     /// iterator for JSON arrays
20     typename BasicJsonType::array_t::iterator array_iterator {};
21     /// generic iterator for all other types
22     primitive_iterator_t primitive_iterator {};
23 };
24 }  // namespace detail
25 }  // namespace nlohmann
26