nlohmann / json

JSON for Modern C++
https://json.nlohmann.me
MIT License
42.01k stars 6.63k forks source link

Compile failure for macos 10.10 SDK + darwin14 #3991

Open jlqibm opened 1 year ago

jlqibm commented 1 year ago

Description

The json.hpp header fails to build in a cross build environment. This is an ubuntu 22.04 docker container with darwin14 and MacOSX10.10 SDK. Clang is 1001@d82e6b7e292b:~$ /usr/x86_64-apple-darwin14/bin/../bin/o64-clang++-libc++ -v Ubuntu clang version 14.0.0-1ubuntu1 Target: x86_64-apple-darwin14 Thread model: posix InstalledDir: /usr/bin

Reproduction steps

I hit the issue with an osxcross docker container.

I compile the minimal code example as: /usr/x86_64-apple-darwin14/bin/../bin/o64-clang++-libc++ -I/src/libcommon/3rd_party/json/include -o osxfail.o -c osxfail.C

This is clang14.

The same file compiles fine on rhel8.7 clang14.

I tried preprocessing the 2 files, then trimming down the json to try to track down the issue. The trimmed json is the same for both the linux and osx files. The only difference is the included header code. I can reproduce the error using the ubuntu clang14 compiler on the resulting preprocessed file.

Expected vs. actual results

It should compile :-)

Minimal code example

#include <nlohmann/json.hpp>

Error messages

1001@d82e6b7e292b:~$ /usr/x86_64-apple-darwin14/bin/../bin/o64-clang++-libc++  -I/src/libcommon/3rd_party/json/include -o osxfail.o -c osxfail.C 
In file included from osxfail.C:1:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/json.hpp:37:
In file included from /usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/algorithm:626:
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/utility:254:9: error: field has incomplete type 'nlohmann::basic_json<>'
    _T2 second;
        ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/map:588:16: note: in instantiation of template class 'std::pair<const std::basic_string<char>, nlohmann::basic_json<>>' requested here
    value_type __cc;
               ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/__tree:603:16: note: in instantiation of template class 'std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>' requested here
    value_type __value_;
               ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/__tree:625:22: note: in instantiation of template class 'std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *>' requested here
    typedef typename __node::base                                 __node_base;
                     ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/map:650:19: note: in instantiation of template class 'std::__tree_iterator<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *> *, long>' requested here
    _TreeIterator __i_;
                  ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/iterators/internal_iterator.hpp:18:48: note: in instantiation of template class 'std::__map_iterator<std::__tree_iterator<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *> *, long>>' requested here
    typename BasicJsonType::object_t::iterator object_iterator {};
                                               ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/iterators/iter_impl.hpp:640:72: note: (skipping 4 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
    internal_iterator<typename std::remove_const<BasicJsonType>::type> m_it {};
                                                                       ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/type_traits:2072:14: note: in instantiation of template class 'std::__is_constructible<false, nlohmann::basic_json<>, nlohmann::basic_json<> &&>' requested here
    : public __is_constructible<is_scalar<_Tp>::value || is_reference<_Tp>::value,
             ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/type_traits:2098:14: note: in instantiation of template class 'std::__is_constructible_void_check<false, nlohmann::basic_json<>, nlohmann::basic_json<> &&>' requested here
    : public __is_constructible_void_check<__contains_void<_Tp, _Args...>::value
             ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/type_traits:2578:34: note: in instantiation of template class 'std::is_constructible<nlohmann::basic_json<>, nlohmann::basic_json<> &&>' requested here
    : __is_nothrow_constructible<is_constructible<_Tp, _Args...>::value, _Tp, _Args...>
                                 ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/type_traits:2713:14: note: in instantiation of template class 'std::is_nothrow_constructible<nlohmann::basic_json<>, nlohmann::basic_json<> &&>' requested here
    : public is_nothrow_constructible<_Tp, typename add_rvalue_reference<_Tp>::type>
             ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:8853:5: note: in instantiation of template class 'std::is_nothrow_move_constructible<nlohmann::basic_json<>>' requested here
    is_nothrow_move_constructible<nlohmann::json>::value&&
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json_fwd.hpp:38:7: note: definition of 'nlohmann::basic_json<>' is not complete until the closing '}'
class basic_json;
      ^
In file included from osxfail.C:1:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/json.hpp:37:
In file included from /usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/algorithm:626:
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/utility:254:9: error: field has incomplete type 'nlohmann::basic_json<>'
    _T2 second;
        ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/map:589:21: note: in instantiation of template class 'std::pair<std::basic_string<char>, nlohmann::basic_json<>>' requested here
    __nc_value_type __nc;
                    ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/__tree:603:16: note: in instantiation of template class 'std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>' requested here
    value_type __value_;
               ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/__tree:625:22: note: in instantiation of template class 'std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *>' requested here
    typedef typename __node::base                                 __node_base;
                     ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/map:650:19: note: in instantiation of template class 'std::__tree_iterator<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *> *, long>' requested here
    _TreeIterator __i_;
                  ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/iterators/internal_iterator.hpp:18:48: note: in instantiation of template class 'std::__map_iterator<std::__tree_iterator<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *> *, long>>' requested here
    typename BasicJsonType::object_t::iterator object_iterator {};
                                               ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/iterators/iter_impl.hpp:640:72: note: (skipping 4 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
    internal_iterator<typename std::remove_const<BasicJsonType>::type> m_it {};
                                                                       ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/type_traits:2072:14: note: in instantiation of template class 'std::__is_constructible<false, nlohmann::basic_json<>, nlohmann::basic_json<> &&>' requested here
    : public __is_constructible<is_scalar<_Tp>::value || is_reference<_Tp>::value,
             ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/type_traits:2098:14: note: in instantiation of template class 'std::__is_constructible_void_check<false, nlohmann::basic_json<>, nlohmann::basic_json<> &&>' requested here
    : public __is_constructible_void_check<__contains_void<_Tp, _Args...>::value
             ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/type_traits:2578:34: note: in instantiation of template class 'std::is_constructible<nlohmann::basic_json<>, nlohmann::basic_json<> &&>' requested here
    : __is_nothrow_constructible<is_constructible<_Tp, _Args...>::value, _Tp, _Args...>
                                 ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/type_traits:2713:14: note: in instantiation of template class 'std::is_nothrow_constructible<nlohmann::basic_json<>, nlohmann::basic_json<> &&>' requested here
    : public is_nothrow_constructible<_Tp, typename add_rvalue_reference<_Tp>::type>
             ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:8853:5: note: in instantiation of template class 'std::is_nothrow_move_constructible<nlohmann::basic_json<>>' requested here
    is_nothrow_move_constructible<nlohmann::json>::value&&
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json_fwd.hpp:38:7: note: definition of 'nlohmann::basic_json<>' is not complete until the closing '}'
class basic_json;
      ^
In file included from osxfail.C:1:
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:4692:24: error: no matching constructor for initialization of 'nlohmann::basic_json<>::const_iterator' (aka 'iter_impl<const nlohmann::basic_json<>>')
        const_iterator result(this);
                       ^      ~~~~
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:4662:16: note: in instantiation of member function 'nlohmann::basic_json<>::cend' requested here
        return cend();
               ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/hash.hpp:63:38: note: in instantiation of member function 'nlohmann::basic_json<>::end' requested here
            for (const auto& element : j)
                                     ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:8822:34: note: in instantiation of function template specialization 'nlohmann::detail::hash<nlohmann::basic_json<>>' requested here
        return nlohmann::detail::hash(j);
                                 ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/iterators/iter_impl.hpp:131:5: note: candidate constructor not viable: no known conversion from 'const nlohmann::basic_json<> *' to 'const iter_impl<const const nlohmann::basic_json<>>' for 1st argument
    iter_impl(const iter_impl<const BasicJsonType>& other) noexcept
    ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/iterators/iter_impl.hpp:153:5: note: candidate constructor not viable: no known conversion from 'const nlohmann::basic_json<> *' to 'const iter_impl<typename std::remove_const<const basic_json<>>::type>' (aka 'const iter_impl<nlohmann::basic_json<>>') for 1st argument
    iter_impl(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) noexcept
    ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/iterators/iter_impl.hpp:81:5: note: candidate constructor not viable: requires 0 arguments, but 1 was provided
    iter_impl() = default;
    ^
In file included from osxfail.C:1:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/json.hpp:49:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/adl_serializer.hpp:5:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/detail/conversions/from_json.hpp:7:
In file included from /usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/map:423:
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/__tree:747:59: error: static_cast from 'std::__tree_const_iterator<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *> *, long>::__node_pointer' (aka 'std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *> *') to 'std::__tree_const_iterator<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *> *, long>::__node_base_pointer' (aka 'std::__tree_node_base<void *> *'), which are not related by inheritance, is not allowed
        {__ptr_ = static_cast<__node_pointer>(__tree_next(static_cast<__node_base_pointer>(__ptr_)));
                                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/map:750:41: note: in instantiation of member function 'std::__tree_const_iterator<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *> *, long>::operator++' requested here
    __map_const_iterator& operator++() {++__i_; return *this;}
                                        ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/map:1052:59: note: in instantiation of member function 'std::__map_const_iterator<std::__tree_const_iterator<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *> *, long>>::operator++' requested here
            for (const_iterator __e = cend(); __f != __l; ++__f)
                                                          ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/map:878:13: note: in instantiation of function template specialization 'std::map<std::basic_string<char>, nlohmann::basic_json<>, std::less<>>::insert<std::__map_const_iterator<std::__tree_const_iterator<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *> *, long>>>' requested here
            insert(__m.begin(), __m.end());
            ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/memory:1641:31: note: in instantiation of member function 'std::map<std::basic_string<char>, nlohmann::basic_json<>, std::less<>>::map' requested here
            ::new((void*)__p) _Up(_VSTD::forward<_Args>(__args)...);
                              ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/memory:1568:18: note: in instantiation of function template specialization 'std::allocator<std::map<std::basic_string<char>, nlohmann::basic_json<>, std::less<>>>::construct<std::map<std::basic_string<char>, nlohmann::basic_json<>, std::less<>>, const std::map<std::basic_string<char>, nlohmann::basic_json<>, std::less<>> &>' requested here
            {__a.construct(__p, _VSTD::forward<_Args>(__args)...);}
                 ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/memory:1449:14: note: (skipping 4 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
            {__construct(__has_construct<allocator_type, pointer, _Args...>(),
             ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:436:37: note: in instantiation of member function 'nlohmann::basic_json<>::basic_json' requested here
                *ref_stack.back() = discarded;
                                    ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:201:60: note: in instantiation of member function 'nlohmann::detail::json_sax_dom_callback_parser<nlohmann::basic_json<>>::end_object' requested here
                            if (JSON_HEDLEY_UNLIKELY(!sax->end_object()))
                                                           ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:92:13: note: in instantiation of function template specialization 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::sax_parse_internal<nlohmann::detail::json_sax_dom_callback_parser<nlohmann::basic_json<>>>' requested here
            sax_parse_internal(&sdp);
            ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:6801:113: note: in instantiation of member function 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::parse' requested here
        parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result);
                                                                                                                ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:8880:28: note: in instantiation of function template specialization 'nlohmann::basic_json<>::parse<const char *>' requested here
    return nlohmann::json::parse(s, s + n);
                           ^
In file included from osxfail.C:1:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/json.hpp:37:
In file included from /usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/algorithm:627:
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/memory:1641:31: error: call to constructor of 'nlohmann::basic_json<>' is ambiguous
            ::new((void*)__p) _Up(_VSTD::forward<_Args>(__args)...);
                              ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/memory:1568:18: note: in instantiation of function template specialization 'std::allocator<nlohmann::basic_json<>>::construct<nlohmann::basic_json<>, nlohmann::basic_json<> &>' requested here
            {__a.construct(__p, _VSTD::forward<_Args>(__args)...);}
                 ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/memory:1449:14: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<nlohmann::basic_json<>>>::__construct<nlohmann::basic_json<>, nlohmann::basic_json<> &>' requested here
            {__construct(__has_construct<allocator_type, pointer, _Args...>(),
             ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/vector:963:25: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<nlohmann::basic_json<>>>::construct<nlohmann::basic_json<>, nlohmann::basic_json<> &>' requested here
        __alloc_traits::construct(__a, _VSTD::__to_raw_pointer(this->__end_), *__first);
                        ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/vector:1160:9: note: in instantiation of function template specialization 'std::vector<nlohmann::basic_json<>>::__construct_at_end<nlohmann::basic_json<> *>' requested here
        __construct_at_end(__x.__begin_, __x.__end_);
        ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/memory:1641:31: note: in instantiation of member function 'std::vector<nlohmann::basic_json<>>::vector' requested here
            ::new((void*)__p) _Up(_VSTD::forward<_Args>(__args)...);
                              ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/memory:1568:18: note: (skipping 5 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
            {__a.construct(__p, _VSTD::forward<_Args>(__args)...);}
                 ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:436:37: note: in instantiation of member function 'nlohmann::basic_json<>::basic_json' requested here
                *ref_stack.back() = discarded;
                                    ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:201:60: note: in instantiation of member function 'nlohmann::detail::json_sax_dom_callback_parser<nlohmann::basic_json<>>::end_object' requested here
                            if (JSON_HEDLEY_UNLIKELY(!sax->end_object()))
                                                           ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:92:13: note: in instantiation of function template specialization 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::sax_parse_internal<nlohmann::detail::json_sax_dom_callback_parser<nlohmann::basic_json<>>>' requested here
            sax_parse_internal(&sdp);
            ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:6801:113: note: in instantiation of member function 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::parse' requested here
        parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result);
                                                                                                                ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:8880:28: note: in instantiation of function template specialization 'nlohmann::basic_json<>::parse<const char *>' requested here
    return nlohmann::json::parse(s, s + n);
                           ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1425:5: note: candidate constructor
    basic_json(const value_t v)
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1449:5: note: candidate constructor
    basic_json(std::nullptr_t = nullptr) noexcept
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:4652:18: error: no matching constructor for initialization of 'nlohmann::basic_json<>::iterator' (aka 'iter_impl<nlohmann::basic_json<>>')
        iterator result(this);
                 ^      ~~~~
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:452:79: note: in instantiation of member function 'nlohmann::basic_json<>::end' requested here
            for (auto it = ref_stack.back()->begin(); it != ref_stack.back()->end(); ++it)
                                                                              ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:201:60: note: in instantiation of member function 'nlohmann::detail::json_sax_dom_callback_parser<nlohmann::basic_json<>>::end_object' requested here
                            if (JSON_HEDLEY_UNLIKELY(!sax->end_object()))
                                                           ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:92:13: note: in instantiation of function template specialization 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::sax_parse_internal<nlohmann::detail::json_sax_dom_callback_parser<nlohmann::basic_json<>>>' requested here
            sax_parse_internal(&sdp);
            ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:6801:113: note: in instantiation of member function 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::parse' requested here
        parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result);
                                                                                                                ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:8880:28: note: in instantiation of function template specialization 'nlohmann::basic_json<>::parse<const char *>' requested here
    return nlohmann::json::parse(s, s + n);
                           ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/iterators/iter_impl.hpp:131:5: note: candidate constructor not viable: no known conversion from 'nlohmann::basic_json<> *' to 'const iter_impl<const nlohmann::basic_json<>>' for 1st argument
    iter_impl(const iter_impl<const BasicJsonType>& other) noexcept
    ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/iterators/iter_impl.hpp:153:5: note: candidate constructor not viable: no known conversion from 'nlohmann::basic_json<> *' to 'const iter_impl<typename std::remove_const<basic_json<>>::type>' (aka 'const iter_impl<nlohmann::basic_json<>>') for 1st argument
    iter_impl(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) noexcept
    ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/iterators/iter_impl.hpp:81:5: note: candidate constructor not viable: requires 0 arguments, but 1 was provided
    iter_impl() = default;
    ^
In file included from osxfail.C:1:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/json.hpp:56:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/detail/input/binary_reader.hpp:19:
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:423:84: error: call to constructor of 'nlohmann::basic_json<>' is ambiguous
            object_element = &(ref_stack.back()->m_value.object->operator[](val) = discarded);
                                                                                   ^~~~~~~~~
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:216:56: note: in instantiation of member function 'nlohmann::detail::json_sax_dom_callback_parser<nlohmann::basic_json<>>::key' requested here
                        if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string())))
                                                       ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:92:13: note: in instantiation of function template specialization 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::sax_parse_internal<nlohmann::detail::json_sax_dom_callback_parser<nlohmann::basic_json<>>>' requested here
            sax_parse_internal(&sdp);
            ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:6801:113: note: in instantiation of member function 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::parse' requested here
        parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result);
                                                                                                                ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:8880:28: note: in instantiation of function template specialization 'nlohmann::basic_json<>::parse<const char *>' requested here
    return nlohmann::json::parse(s, s + n);
                           ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1425:5: note: candidate constructor
    basic_json(const value_t v)
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1449:5: note: candidate constructor
    basic_json(std::nullptr_t = nullptr) noexcept
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:2263:38: note: passing argument to parameter 'other' here
    basic_json& operator=(basic_json other) noexcept (
                                     ^
In file included from osxfail.C:1:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/json.hpp:49:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/adl_serializer.hpp:5:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/detail/conversions/from_json.hpp:7:
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/map:1366:53: error: static_cast from 'std::unique_ptr<std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *>, std::__map_node_destructor<std::allocator<std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *>>>>::pointer' (aka 'std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *> *') to 'std::map<std::basic_string<char>, nlohmann::basic_json<>, std::less<>>::__node_base_pointer' (aka 'std::__tree_node_base<void *> *'), which are not related by inheritance, is not allowed
        __tree_.__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get()));
                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:423:66: note: in instantiation of member function 'std::map<std::basic_string<char>, nlohmann::basic_json<>, std::less<>>::operator[]' requested here
            object_element = &(ref_stack.back()->m_value.object->operator[](val) = discarded);
                                                                 ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:216:56: note: in instantiation of member function 'nlohmann::detail::json_sax_dom_callback_parser<nlohmann::basic_json<>>::key' requested here
                        if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string())))
                                                       ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:92:13: note: in instantiation of function template specialization 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::sax_parse_internal<nlohmann::detail::json_sax_dom_callback_parser<nlohmann::basic_json<>>>' requested here
            sax_parse_internal(&sdp);
            ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:6801:113: note: in instantiation of member function 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::parse' requested here
        parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result);
                                                                                                                ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:8880:28: note: in instantiation of function template specialization 'nlohmann::basic_json<>::parse<const char *>' requested here
    return nlohmann::json::parse(s, s + n);
                           ^
In file included from osxfail.C:1:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/json.hpp:49:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/adl_serializer.hpp:5:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/detail/conversions/from_json.hpp:7:
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/map:1219:16: error: static_cast from 'std::__tree<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, std::__map_value_compare<std::basic_string<char>, std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, std::less<>, true>, std::allocator<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>>>::__node_pointer' (aka 'std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *> *') to 'std::map<std::basic_string<char>, nlohmann::basic_json<>, std::less<>>::__node_base_pointer' (aka 'std::__tree_node_base<void *> *'), which are not related by inheritance, is not allowed
    __parent = static_cast<__node_base_pointer>(__tree_.__end_node());
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/map:1361:36: note: in instantiation of member function 'std::map<std::basic_string<char>, nlohmann::basic_json<>, std::less<>>::__find_equal_key' requested here
    __node_base_pointer& __child = __find_equal_key(__parent, __k);
                                   ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:423:66: note: in instantiation of member function 'std::map<std::basic_string<char>, nlohmann::basic_json<>, std::less<>>::operator[]' requested here
            object_element = &(ref_stack.back()->m_value.object->operator[](val) = discarded);
                                                                 ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:216:56: note: in instantiation of member function 'nlohmann::detail::json_sax_dom_callback_parser<nlohmann::basic_json<>>::key' requested here
                        if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string())))
                                                       ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:92:13: note: in instantiation of function template specialization 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::sax_parse_internal<nlohmann::detail::json_sax_dom_callback_parser<nlohmann::basic_json<>>>' requested here
            sax_parse_internal(&sdp);
            ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:6801:113: note: in instantiation of member function 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::parse' requested here
        parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result);
                                                                                                                ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:8880:28: note: in instantiation of function template specialization 'nlohmann::basic_json<>::parse<const char *>' requested here
    return nlohmann::json::parse(s, s + n);
                           ^
In file included from osxfail.C:1:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/json.hpp:56:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/detail/input/binary_reader.hpp:19:
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:496:37: error: call to constructor of 'nlohmann::basic_json<>' is ambiguous
                *ref_stack.back() = discarded;
                                    ^~~~~~~~~
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:248:60: note: in instantiation of member function 'nlohmann::detail::json_sax_dom_callback_parser<nlohmann::basic_json<>>::end_array' requested here
                            if (JSON_HEDLEY_UNLIKELY(!sax->end_array()))
                                                           ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:92:13: note: in instantiation of function template specialization 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::sax_parse_internal<nlohmann::detail::json_sax_dom_callback_parser<nlohmann::basic_json<>>>' requested here
            sax_parse_internal(&sdp);
            ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:6801:113: note: in instantiation of member function 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::parse' requested here
        parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result);
                                                                                                                ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:8880:28: note: in instantiation of function template specialization 'nlohmann::basic_json<>::parse<const char *>' requested here
    return nlohmann::json::parse(s, s + n);
                           ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1425:5: note: candidate constructor
    basic_json(const value_t v)
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1449:5: note: candidate constructor
    basic_json(std::nullptr_t = nullptr) noexcept
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:2263:38: note: passing argument to parameter 'other' here
    basic_json& operator=(basic_json other) noexcept (
                                     ^
In file included from osxfail.C:1:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/json.hpp:56:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/detail/input/binary_reader.hpp:19:
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:561:22: error: no matching conversion for functional-style cast from 'std::basic_string<char>' to 'nlohmann::basic_json<>'
        auto value = BasicJsonType(std::forward<Value>(v));
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:384:9: note: in instantiation of function template specialization 'nlohmann::detail::json_sax_dom_callback_parser<nlohmann::basic_json<>>::handle_value<std::basic_string<char> &>' requested here
        handle_value(val);
        ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:319:56: note: in instantiation of member function 'nlohmann::detail::json_sax_dom_callback_parser<nlohmann::basic_json<>>::string' requested here
                        if (JSON_HEDLEY_UNLIKELY(!sax->string(m_lexer.get_string())))
                                                       ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:92:13: note: in instantiation of function template specialization 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::sax_parse_internal<nlohmann::detail::json_sax_dom_callback_parser<nlohmann::basic_json<>>>' requested here
            sax_parse_internal(&sdp);
            ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:6801:113: note: in instantiation of member function 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::parse' requested here
        parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result);
                                                                                                                ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:8880:28: note: in instantiation of function template specialization 'nlohmann::basic_json<>::parse<const char *>' requested here
    return nlohmann::json::parse(s, s + n);
                           ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1425:5: note: candidate constructor not viable: no known conversion from 'std::basic_string<char>' to 'const nlohmann::basic_json::value_t' (aka 'const nlohmann::detail::value_t') for 1st argument
    basic_json(const value_t v)
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1449:5: note: candidate constructor not viable: no known conversion from 'std::basic_string<char>' to 'std::nullptr_t' for 1st argument
    basic_json(std::nullptr_t = nullptr) noexcept
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1684:5: note: candidate constructor not viable: no known conversion from 'std::basic_string<char>' to 'nlohmann::basic_json<>::initializer_list_t' (aka 'initializer_list<detail::json_ref<basic_json<>>>') for 1st argument
    basic_json(initializer_list_t init,
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:2225:5: note: candidate constructor not viable: no known conversion from 'std::basic_string<char>' to 'nlohmann::basic_json<>' for 1st argument
    basic_json(basic_json&& other) noexcept
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1522:5: note: candidate template ignored: substitution failure [with CompatibleType = std::basic_string<char> &, U = std::basic_string<char>, $2 = 0]
    basic_json(CompatibleType && val) noexcept(noexcept(
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1560:5: note: candidate template ignored: requirement 'detail::is_basic_json<std::basic_string<char, std::char_traits<char>, std::allocator<char>>>::value' was not satisfied [with BasicJsonType = std::basic_string<char>]
    basic_json(const BasicJsonType& val)
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:2108:5: note: candidate template ignored: requirement 'detail::conjunction<nlohmann::detail::is_json_ref<std::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::is_same<char, nlohmann::basic_json<std::map, std::vector, std::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char>>>>>::value' was not satisfied [with JsonRef = std::basic_string<char>]
    basic_json(const JsonRef& ref) : basic_json(ref.moved_or_copied()) {}
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1939:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_json(size_type cnt, const basic_json& val)
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:2005:5: note: candidate constructor template not viable: requires 2 arguments, but 1 was provided
    basic_json(InputIT first, InputIT last)
    ^
In file included from osxfail.C:1:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/json.hpp:56:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/detail/input/binary_reader.hpp:19:
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:233:73: error: rvalue reference to type 'basic_string<...>' cannot bind to lvalue of type 'basic_string<...>'
        object_element = &(ref_stack.back()->m_value.object->operator[](val));
                                                                        ^~~
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:216:56: note: in instantiation of member function 'nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<>>::key' requested here
                        if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string())))
                                                       ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:120:13: note: in instantiation of function template specialization 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::sax_parse_internal<nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<>>>' requested here
            sax_parse_internal(&sdp);
            ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:6801:113: note: in instantiation of member function 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::parse' requested here
        parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result);
                                                                                                                ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:8880:28: note: in instantiation of function template specialization 'nlohmann::basic_json<>::parse<const char *>' requested here
    return nlohmann::json::parse(s, s + n);
                           ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/map:999:40: note: passing argument to parameter '__k' here
    mapped_type& operator[](key_type&& __k);
                                       ^
In file included from osxfail.C:1:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/json.hpp:56:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/detail/input/binary_reader.hpp:19:
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:233:26: error: taking the address of a temporary object of type 'std::map<std::basic_string<char>, nlohmann::basic_json<>, std::less<>>::mapped_type' (aka 'nlohmann::basic_json<>') [-Waddress-of-temporary]
        object_element = &(ref_stack.back()->m_value.object->operator[](val));
                         ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from osxfail.C:1:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/json.hpp:49:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/adl_serializer.hpp:5:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/detail/conversions/from_json.hpp:7:
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/map:1379:26: error: non-const lvalue reference to type 'rebind<...>' cannot bind to a temporary of type 'rebind<...>'
    __node_base_pointer& __child = __find_equal_key(__parent, __k);
                         ^         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:233:62: note: in instantiation of member function 'std::map<std::basic_string<char>, nlohmann::basic_json<>, std::less<>>::operator[]' requested here
        object_element = &(ref_stack.back()->m_value.object->operator[](val));
                                                             ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:216:56: note: in instantiation of member function 'nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<>>::key' requested here
                        if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string())))
                                                       ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:120:13: note: in instantiation of function template specialization 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::sax_parse_internal<nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<>>>' requested here
            sax_parse_internal(&sdp);
            ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:6801:113: note: in instantiation of member function 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::parse' requested here
        parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result);
                                                                                                                ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:8880:28: note: in instantiation of function template specialization 'nlohmann::basic_json<>::parse<const char *>' requested here
    return nlohmann::json::parse(s, s + n);
                           ^
In file included from osxfail.C:1:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/json.hpp:49:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/adl_serializer.hpp:5:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/detail/conversions/from_json.hpp:7:
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/map:1384:53: error: static_cast from 'std::unique_ptr<std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *>, std::__map_node_destructor<std::allocator<std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *>>>>::pointer' (aka 'std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *> *') to 'std::map<std::basic_string<char>, nlohmann::basic_json<>, std::less<>>::__node_base_pointer' (aka 'std::__tree_node_base<void *> *'), which are not related by inheritance, is not allowed
        __tree_.__insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get()));
                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/map:1264:16: error: static_cast from 'std::__tree<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, std::__map_value_compare<std::basic_string<char>, std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, std::less<>, true>, std::allocator<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>>>::__node_const_pointer' (aka 'std::__tree_node<std::__value_type<std::basic_string<char>, nlohmann::basic_json<>>, void *> *') to 'std::map<std::basic_string<char>, nlohmann::basic_json<>, std::less<>>::__node_base_pointer' (aka 'std::__tree_node_base<void *> *'), which are not related by inheritance, is not allowed
    __parent = static_cast<__node_base_pointer>(__tree_.__end_node());
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/map:1379:36: note: in instantiation of member function 'std::map<std::basic_string<char>, nlohmann::basic_json<>, std::less<>>::__find_equal_key' requested here
    __node_base_pointer& __child = __find_equal_key(__parent, __k);
                                   ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:233:62: note: in instantiation of member function 'std::map<std::basic_string<char>, nlohmann::basic_json<>, std::less<>>::operator[]' requested here
        object_element = &(ref_stack.back()->m_value.object->operator[](val));
                                                             ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:216:56: note: in instantiation of member function 'nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<>>::key' requested here
                        if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string())))
                                                       ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:120:13: note: in instantiation of function template specialization 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::sax_parse_internal<nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<>>>' requested here
            sax_parse_internal(&sdp);
            ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:6801:113: note: in instantiation of member function 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::parse' requested here
        parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result);
                                                                                                                ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:8880:28: note: in instantiation of function template specialization 'nlohmann::basic_json<>::parse<const char *>' requested here
    return nlohmann::json::parse(s, s + n);
                           ^
In file included from osxfail.C:1:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/json.hpp:56:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/detail/input/binary_reader.hpp:19:
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:294:20: error: no matching conversion for functional-style cast from 'double' to 'nlohmann::basic_json<>'
            root = BasicJsonType(std::forward<Value>(v));
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:202:9: note: in instantiation of function template specialization 'nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<>>::handle_value<double &>' requested here
        handle_value(val);
        ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:273:56: note: in instantiation of member function 'nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<>>::number_float' requested here
                        if (JSON_HEDLEY_UNLIKELY(!sax->number_float(res, m_lexer.get_string())))
                                                       ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:120:13: note: in instantiation of function template specialization 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::sax_parse_internal<nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<>>>' requested here
            sax_parse_internal(&sdp);
            ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:6801:113: note: in instantiation of member function 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::parse' requested here
        parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result);
                                                                                                                ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:8880:28: note: in instantiation of function template specialization 'nlohmann::basic_json<>::parse<const char *>' requested here
    return nlohmann::json::parse(s, s + n);
                           ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1425:5: note: candidate constructor not viable: no known conversion from 'double' to 'const nlohmann::basic_json::value_t' (aka 'const nlohmann::detail::value_t') for 1st argument
    basic_json(const value_t v)
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1449:5: note: candidate constructor not viable: no known conversion from 'double' to 'std::nullptr_t' for 1st argument
    basic_json(std::nullptr_t = nullptr) noexcept
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1684:5: note: candidate constructor not viable: no known conversion from 'double' to 'nlohmann::basic_json<>::initializer_list_t' (aka 'initializer_list<detail::json_ref<basic_json<>>>') for 1st argument
    basic_json(initializer_list_t init,
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:2225:5: note: candidate constructor not viable: no known conversion from 'double' to 'nlohmann::basic_json<>' for 1st argument
    basic_json(basic_json&& other) noexcept
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1522:5: note: candidate template ignored: substitution failure [with CompatibleType = double &, U = double, $2 = 0]
    basic_json(CompatibleType && val) noexcept(noexcept(
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1560:5: note: candidate template ignored: requirement 'detail::is_basic_json<double>::value' was not satisfied [with BasicJsonType = double]
    basic_json(const BasicJsonType& val)
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:2108:5: note: candidate template ignored: substitution failure [with JsonRef = double]: type 'double' cannot be used prior to '::' because it has no members
    basic_json(const JsonRef& ref) : basic_json(ref.moved_or_copied()) {}
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1939:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_json(size_type cnt, const basic_json& val)
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:2005:5: note: candidate constructor template not viable: requires 2 arguments, but 1 was provided
    basic_json(InputIT first, InputIT last)
    ^
In file included from osxfail.C:1:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/json.hpp:56:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/detail/input/binary_reader.hpp:19:
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:308:27: error: no matching conversion for functional-style cast from 'double' to 'nlohmann::basic_json<>'
        *object_element = BasicJsonType(std::forward<Value>(v));
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1425:5: note: candidate constructor not viable: no known conversion from 'double' to 'const nlohmann::basic_json::value_t' (aka 'const nlohmann::detail::value_t') for 1st argument
    basic_json(const value_t v)
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1449:5: note: candidate constructor not viable: no known conversion from 'double' to 'std::nullptr_t' for 1st argument
    basic_json(std::nullptr_t = nullptr) noexcept
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1684:5: note: candidate constructor not viable: no known conversion from 'double' to 'nlohmann::basic_json<>::initializer_list_t' (aka 'initializer_list<detail::json_ref<basic_json<>>>') for 1st argument
    basic_json(initializer_list_t init,
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:2225:5: note: candidate constructor not viable: no known conversion from 'double' to 'nlohmann::basic_json<>' for 1st argument
    basic_json(basic_json&& other) noexcept
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1522:5: note: candidate template ignored: substitution failure [with CompatibleType = double &, U = double, $2 = 0]
    basic_json(CompatibleType && val) noexcept(noexcept(
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1560:5: note: candidate template ignored: requirement 'detail::is_basic_json<double>::value' was not satisfied [with BasicJsonType = double]
    basic_json(const BasicJsonType& val)
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:2108:5: note: candidate template ignored: substitution failure [with JsonRef = double]: type 'double' cannot be used prior to '::' because it has no members
    basic_json(const JsonRef& ref) : basic_json(ref.moved_or_copied()) {}
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1939:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_json(size_type cnt, const basic_json& val)
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:2005:5: note: candidate constructor template not viable: requires 2 arguments, but 1 was provided
    basic_json(InputIT first, InputIT last)
    ^
In file included from osxfail.C:1:
In file included from /src/libcommon/3rd_party/json/include/nlohmann/json.hpp:37:
In file included from /usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/algorithm:627:
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/memory:1641:31: error: no matching constructor for initialization of 'nlohmann::basic_json<>'
            ::new((void*)__p) _Up(_VSTD::forward<_Args>(__args)...);
                              ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/memory:1568:18: note: in instantiation of function template specialization 'std::allocator<nlohmann::basic_json<>>::construct<nlohmann::basic_json<>, double &>' requested here
            {__a.construct(__p, _VSTD::forward<_Args>(__args)...);}
                 ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/memory:1449:14: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<nlohmann::basic_json<>>>::__construct<nlohmann::basic_json<>, double &>' requested here
            {__construct(__has_construct<allocator_type, pointer, _Args...>(),
             ^
/usr/x86_64-apple-darwin14/bin/../SDK/MacOSX10.10.sdk/usr/include/c++/v1/vector:1587:25: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<nlohmann::basic_json<>>>::construct<nlohmann::basic_json<>, double &>' requested here
        __alloc_traits::construct(this->__alloc(),
                        ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:302:46: note: in instantiation of function template specialization 'std::vector<nlohmann::basic_json<>>::emplace_back<double &>' requested here
            ref_stack.back()->m_value.array->emplace_back(std::forward<Value>(v));
                                             ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/json_sax.hpp:202:9: note: in instantiation of function template specialization 'nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<>>::handle_value<double &>' requested here
        handle_value(val);
        ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:273:56: note: in instantiation of member function 'nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<>>::number_float' requested here
                        if (JSON_HEDLEY_UNLIKELY(!sax->number_float(res, m_lexer.get_string())))
                                                       ^
/src/libcommon/3rd_party/json/include/nlohmann/detail/input/parser.hpp:120:13: note: in instantiation of function template specialization 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::sax_parse_internal<nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<>>>' requested here
            sax_parse_internal(&sdp);
            ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:6801:113: note: in instantiation of member function 'nlohmann::detail::parser<nlohmann::basic_json<>, nlohmann::detail::iterator_input_adapter<const char *>>::parse' requested here
        parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result);
                                                                                                                ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:8880:28: note: in instantiation of function template specialization 'nlohmann::basic_json<>::parse<const char *>' requested here
    return nlohmann::json::parse(s, s + n);
                           ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1425:5: note: candidate constructor not viable: no known conversion from 'double' to 'const nlohmann::basic_json::value_t' (aka 'const nlohmann::detail::value_t') for 1st argument
    basic_json(const value_t v)
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1449:5: note: candidate constructor not viable: no known conversion from 'double' to 'std::nullptr_t' for 1st argument
    basic_json(std::nullptr_t = nullptr) noexcept
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1684:5: note: candidate constructor not viable: no known conversion from 'double' to 'nlohmann::basic_json<>::initializer_list_t' (aka 'initializer_list<detail::json_ref<basic_json<>>>') for 1st argument
    basic_json(initializer_list_t init,
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:2225:5: note: candidate constructor not viable: no known conversion from 'double' to 'nlohmann::basic_json<>' for 1st argument
    basic_json(basic_json&& other) noexcept
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1522:5: note: candidate template ignored: substitution failure [with CompatibleType = double &, U = double, $2 = 0]
    basic_json(CompatibleType && val) noexcept(noexcept(
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1560:5: note: candidate template ignored: requirement 'detail::is_basic_json<double>::value' was not satisfied [with BasicJsonType = double]
    basic_json(const BasicJsonType& val)
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:2108:5: note: candidate template ignored: substitution failure [with JsonRef = double]: type 'double' cannot be used prior to '::' because it has no members
    basic_json(const JsonRef& ref) : basic_json(ref.moved_or_copied()) {}
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:1939:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
    basic_json(size_type cnt, const basic_json& val)
    ^
/src/libcommon/3rd_party/json/include/nlohmann/json.hpp:2005:5: note: candidate constructor template not viable: requires 2 arguments, but 1 was provided
    basic_json(InputIT first, InputIT last)
    ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
1001@d82e6b7e292b:~$

Compiler and operating system

clang14 macosx 10.10

Library version

3.11.2

Validation

jlqibm commented 1 year ago

v3.9.1 compiles successfully v3.10.0 fails I tracked down the commit causing the failure to:

`commit f8037660d06a0fbb6b1cde944d436032d04564ae FAILS Author: Niels Lohmann mail@nlohmann.me Date: Thu Jan 14 22:43:52 2021 +0100

:recycle: add iterator set_parent function

`