dropbox / djinni

A tool for generating cross-language type declarations and interface bindings.
Apache License 2.0
2.88k stars 488 forks source link

Set with other collections doesn't compile #441

Open 4brunu opened 5 years ago

4brunu commented 5 years ago

Hi,

I found an issue related to set with other collections, for example, set<map<>> or a set<map<>>.

Here are some examples:

set_map = record {
    set_map : set<map<string, string>>;
}
set_list = record {
    set_list : set<list<string>>;
}

The generated code doesn't compile.

Here is the compilation errors generated by Xcode ##** ``` /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__hash_table:868:5: Static_assert failed due to requirement '__check_hash_requirements, basic_string, hash >, equal_to >, allocator, basic_string > > >, hash, basic_string, hash >, equal_to >, allocator, basic_string > > > > >::value' "the specified hash does not meet the Hash requirements" /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__hash_table:1467:7: Call to implicitly-deleted copy constructor of '__compressed_pair, std::__1::basic_string, std::__1::hash >, std::__1::equal_to >, std::__1::allocator, std::__1::basic_string > > >, std::__1::hash, std::__1::basic_string, std::__1::hash >, std::__1::equal_to >, std::__1::allocator, std::__1::basic_string > > > >, std::__1::equal_to, std::__1::basic_string, std::__1::hash >, std::__1::equal_to >, std::__1::allocator, std::__1::basic_string > > > >, std::__1::allocator, std::__1::basic_string, std::__1::hash >, std::__1::equal_to >, std::__1::allocator, std::__1::basic_string > > > > >::size_type, std::__1::__hash_table, std::__1::basic_string, std::__1::hash >, std::__1::equal_to >, std::__1::allocator, std::__1::basic_string > > >, std::__1::hash, std::__1::basic_string, std::__1::hash >, std::__1::equal_to >, std::__1::allocator, std::__1::basic_string > > > >, std::__1::equal_to, std::__1::basic_string, std::__1::hash >, std::__1::equal_to >, std::__1::allocator, std::__1::basic_string > > > >, std::__1::allocator, std::__1::basic_string, std::__1::hash >, std::__1::equal_to >, std::__1::allocator, std::__1::basic_string > > > > >::hasher>' (aka '__compressed_pair, std::__1::basic_string, std::__1::hash >, std::__1::equal_to >, std::__1::allocator, std::__1::basic_string > > > > >') /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:2237:41: Call to implicitly-deleted default constructor of '__compressed_pair_elem, std::__1::basic_string, std::__1::hash >, std::__1::equal_to >, std::__1::allocator, std::__1::basic_string > > > >, 1>' /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__hash_table:2012:21: Type 'std::__1::__hash_table, std::__1::basic_string, std::__1::hash >, std::__1::equal_to >, std::__1::allocator, std::__1::basic_string > > >, std::__1::hash, std::__1::basic_string, std::__1::hash >, std::__1::equal_to >, std::__1::allocator, std::__1::basic_string > > > >, std::__1::equal_to, std::__1::basic_string, std::__1::hash >, std::__1::equal_to >, std::__1::allocator, std::__1::basic_string > > > >, std::__1::allocator, std::__1::basic_string, std::__1::hash >, std::__1::equal_to >, std::__1::allocator, std::__1::basic_string > > > > >::hasher' (aka 'std::__1::hash, std::__1::basic_string, std::__1::hash >, std::__1::equal_to >, std::__1::allocator, std::__1::basic_string > > > >') does not provide a call operator ```
Here is the generated error by Android Studio ##** ``` FAILED: /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=i686-none-linux-android16 --gcc-toolchain=/Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -DSQLITE_OMIT_LOAD_EXTENSION -D_FILE_OFFSET_BITS=32 -Dproject_EXPORTS -I../../../../../../../src/main/cpp -I../../../../../../../generated-src/cpp -I../../../../../../../generated-src/jni -I../../../../../../../deps/json11 -I../../../../../../../deps/djinni/support-lib/jni -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -stdlib=libc++ -std=c++17 -fexceptions -frtti -Wall -Wextra -Wno-unused-parameter -O0 -fno-limit-debug-info -fPIC -MD -MT android_project/ProjectAndroid/app/src/main/cpp/CMakeFiles/project.dir/__/__/__/__/__/__/generated-src/jni/NativeSetList.cpp.o -MF android_project/ProjectAndroid/app/src/main/cpp/CMakeFiles/project.dir/__/__/__/__/__/__/generated-src/jni/NativeSetList.cpp.o.d -o android_project/ProjectAndroid/app/src/main/cpp/CMakeFiles/project.dir/__/__/__/__/__/__/generated-src/jni/NativeSetList.cpp.o -c /Users/user/Developer/Project/generated-src/jni/NativeSetList.cpp In file included from /Users/user/Developer/Project/generated-src/jni/NativeSetList.cpp:4: In file included from ../../../../../../../generated-src/jni/NativeSetList.hpp:7: In file included from ../../../../../../../generated-src/cpp/set_list.hpp:7: In file included from /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/unordered_set:356: /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:885:5: error: static_assert failed due to requirement '__check_hash_requirements, allocator >, allocator, allocator > > >, hash, allocator >, allocator, allocator > > > > >::value' "the specified hash does not meet the Hash requirements" static_assert(__check_hash_requirements<_Key, _Hash>::value, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:967:77: note: in instantiation of member function 'std::__ndk1::__diagnose_hash_table_helper, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > > >::__trigger_diagnostics' requested here static_assert(__diagnose_hash_table_helper<_Tp, _Hash, _Equal, _Alloc>::__trigger_diagnostics(), ""); ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/unordered_set:391:13: note: in instantiation of template class 'std::__ndk1::__hash_table, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > > >' requested here __table __table_; ^ ../../../../../../../generated-src/cpp/set_list.hpp:14:50: note: in instantiation of template class 'std::__ndk1::unordered_set, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > > >' requested here std::unordered_set> set_list; ^ In file included from /Users/user/Developer/Project/generated-src/jni/NativeSetList.cpp:4: In file included from ../../../../../../../generated-src/jni/NativeSetList.hpp:7: In file included from ../../../../../../../generated-src/cpp/set_list.hpp:7: In file included from /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/unordered_set:356: /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:1507:7: error: call to implicitly-deleted copy constructor of '__compressed_pair, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > > >::size_type, std::__ndk1::__hash_table, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > > >::hasher>' (aka '__compressed_pair, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > > >') __p2_(_VSTD::move(__u.__p2_)), ^ ~~~~~~~~~~~~~~~~~~~~~~ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/unordered_set:829:7: note: in instantiation of member function 'std::__ndk1::__hash_table, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > > >::__hash_table' requested here : __table_(_VSTD::move(__u.__table_)) ^ ../../../../../../../generated-src/cpp/set_list.hpp:17:7: note: in instantiation of member function 'std::__ndk1::unordered_set, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > > >::unordered_set' requested here : set_list(std::move(set_list_)) ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/memory:2198:27: note: copy constructor of '__compressed_pair, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > > >' is implicitly deleted because base class '__compressed_pair_elem, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, 1>' has a deleted copy constructor private __compressed_pair_elem<_T2, 1> { ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/memory:2158:50: note: copy constructor of '__compressed_pair_elem, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, 1, true>' is implicitly deleted because base class 'std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >' has a deleted copy constructor struct __compressed_pair_elem<_Tp, _Idx, true> : private _Tp { ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/utility:1548:36: note: copy constructor of 'hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >' is implicitly deleted because base class '__enum_hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >' has a deleted copy constructor struct _LIBCPP_TEMPLATE_VIS hash : public __enum_hash<_Tp> ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/utility:1543:5: note: '__enum_hash' has been explicitly marked deleted here __enum_hash(__enum_hash const&) = delete; ^ In file included from /Users/user/Developer/Project/generated-src/jni/NativeSetList.cpp:4: In file included from ../../../../../../../generated-src/jni/NativeSetList.hpp:6: In file included from ../../../../../../../deps/djinni/support-lib/jni/djinni_support.hpp:21: /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/memory:2227:41: error: call to implicitly-deleted default constructor of '__compressed_pair_elem, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, 1>' : _Base1(std::forward<_Tp>(__t)), _Base2() {} ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:1436:7: note: in instantiation of function template specialization 'std::__ndk1::__compressed_pair, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > > >::__compressed_pair' requested here : __p2_(0), ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/unordered_set:415:5: note: in instantiation of member function 'std::__ndk1::__hash_table, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > > >::__hash_table' requested here unordered_set() ^ ../../../../../../../deps/djinni/support-lib/jni/Marshal.hpp:423:22: note: in instantiation of member function 'std::__ndk1::unordered_set, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > > >::unordered_set' requested here auto c = CppType(); ^ /Users/user/Developer/Project/generated-src/jni/NativeSetList.cpp:25:62: note: in instantiation of member function 'djinni::Set >::toCpp' requested here return {::djinni::Set<::djinni::List<::djinni::String>>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mSetList))}; ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/memory:2165:39: note: explicitly defaulted function was implicitly deleted here _LIBCPP_INLINE_VISIBILITY constexpr __compressed_pair_elem() = default; ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/memory:2158:50: note: default constructor of '__compressed_pair_elem, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, 1, true>' is implicitly deleted because base class 'std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >' has a deleted default constructor struct __compressed_pair_elem<_Tp, _Idx, true> : private _Tp { ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/utility:1548:36: note: default constructor of 'hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >' is implicitly deleted because base class '__enum_hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >' has a deleted default constructor struct _LIBCPP_TEMPLATE_VIS hash : public __enum_hash<_Tp> ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/utility:1542:5: note: '__enum_hash' has been explicitly marked deleted here __enum_hash() = delete; ^ In file included from /Users/user/Developer/Project/generated-src/jni/NativeSetList.cpp:4: In file included from ../../../../../../../generated-src/jni/NativeSetList.hpp:7: In file included from ../../../../../../../generated-src/cpp/set_list.hpp:7: In file included from /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/unordered_set:356: /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:2120:21: error: type 'std::__ndk1::__hash_table, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > > >::hasher' (aka 'std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >') does not provide a call operator size_t __hash = hash_function()(__k); ^~~~~~~~~~~~~~~ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:1146:14: note: in instantiation of function template specialization 'std::__ndk1::__hash_table, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > > >::__emplace_unique_key_args, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > >, std::__ndk1::vector, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >' requested here return __emplace_unique_key_args(_NodeTypes::__get_key(__x), _VSTD::move(__x)); ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/unordered_set:543:26: note: in instantiation of member function 'std::__ndk1::__hash_table, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > > >::__insert_unique' requested here {return __table_.__insert_unique(_VSTD::move(__x));} ^ ../../../../../../../deps/djinni/support-lib/jni/Marshal.hpp:430:19: note: in instantiation of member function 'std::__ndk1::unordered_set, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::allocator, std::__ndk1::allocator > > > > >::insert' requested here c.insert(T::Boxed::toCpp(jniEnv, static_cast(je.get()))); ^ /Users/user/Developer/Project/generated-src/jni/NativeSetList.cpp:25:62: note: in instantiation of member function 'djinni::Set >::toCpp' requested here return {::djinni::Set<::djinni::List<::djinni::String>>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mSetList))}; ^ 4 errors generated. FAILED: /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=i686-none-linux-android16 --gcc-toolchain=/Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -DSQLITE_OMIT_LOAD_EXTENSION -D_FILE_OFFSET_BITS=32 -Dproject_EXPORTS -I../../../../../../../src/main/cpp -I../../../../../../../generated-src/cpp -I../../../../../../../generated-src/jni -I../../../../../../../deps/json11 -I../../../../../../../deps/djinni/support-lib/jni -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -stdlib=libc++ -std=c++17 -fexceptions -frtti -Wall -Wextra -Wno-unused-parameter -O0 -fno-limit-debug-info -fPIC -MD -MT android_project/ProjectAndroid/app/src/main/cpp/CMakeFiles/project.dir/__/__/__/__/__/__/generated-src/jni/NativeSetMap.cpp.o -MF android_project/ProjectAndroid/app/src/main/cpp/CMakeFiles/project.dir/__/__/__/__/__/__/generated-src/jni/NativeSetMap.cpp.o.d -o android_project/ProjectAndroid/app/src/main/cpp/CMakeFiles/project.dir/__/__/__/__/__/__/generated-src/jni/NativeSetMap.cpp.o -c /Users/user/Developer/Project/generated-src/jni/NativeSetMap.cpp In file included from /Users/user/Developer/Project/generated-src/jni/NativeSetMap.cpp:4: In file included from ../../../../../../../generated-src/jni/NativeSetMap.hpp:7: In file included from ../../../../../../../generated-src/cpp/set_map.hpp:7: In file included from /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/unordered_map:402: /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:885:5: error: static_assert failed due to requirement '__check_hash_requirements, allocator >, basic_string, allocator >, hash, allocator > >, equal_to, allocator > >, allocator, allocator >, basic_string, allocator > > > >, hash, allocator >, basic_string, allocator >, hash, allocator > >, equal_to, allocator > >, allocator, allocator >, basic_string, allocator > > > > > >::value' "the specified hash does not meet the Hash requirements" static_assert(__check_hash_requirements<_Key, _Hash>::value, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:967:77: note: in instantiation of member function 'std::__ndk1::__diagnose_hash_table_helper, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > > >::__trigger_diagnostics' requested here static_assert(__diagnose_hash_table_helper<_Tp, _Hash, _Equal, _Alloc>::__trigger_diagnostics(), ""); ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/unordered_set:391:13: note: in instantiation of template class 'std::__ndk1::__hash_table, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > > >' requested here __table __table_; ^ ../../../../../../../generated-src/cpp/set_map.hpp:14:70: note: in instantiation of template class 'std::__ndk1::unordered_set, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > > >' requested here std::unordered_set> set_map; ^ In file included from /Users/user/Developer/Project/generated-src/jni/NativeSetMap.cpp:4: In file included from ../../../../../../../generated-src/jni/NativeSetMap.hpp:7: In file included from ../../../../../../../generated-src/cpp/set_map.hpp:7: In file included from /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/unordered_map:402: /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:1507:7: error: call to implicitly-deleted copy constructor of '__compressed_pair, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > > >::size_type, std::__ndk1::__hash_table, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > > >::hasher>' (aka '__compressed_pair, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > > >') __p2_(_VSTD::move(__u.__p2_)), ^ ~~~~~~~~~~~~~~~~~~~~~~ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/unordered_set:829:7: note: in instantiation of member function 'std::__ndk1::__hash_table, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > > >::__hash_table' requested here : __table_(_VSTD::move(__u.__table_)) ^ ../../../../../../../generated-src/cpp/set_map.hpp:17:7: note: in instantiation of member function 'std::__ndk1::unordered_set, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > > >::unordered_set' requested here : set_map(std::move(set_map_)) ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/memory:2198:27: note: copy constructor of '__compressed_pair, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > > >' is implicitly deleted because base class '__compressed_pair_elem, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, 1>' has a deleted copy constructor private __compressed_pair_elem<_T2, 1> { ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/memory:2158:50: note: copy constructor of '__compressed_pair_elem, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, 1, true>' is implicitly deleted because base class 'std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >' has a deleted copy constructor struct __compressed_pair_elem<_Tp, _Idx, true> : private _Tp { ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/utility:1548:36: note: copy constructor of 'hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >' is implicitly deleted because base class '__enum_hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >' has a deleted copy constructor struct _LIBCPP_TEMPLATE_VIS hash : public __enum_hash<_Tp> ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/utility:1543:5: note: '__enum_hash' has been explicitly marked deleted here __enum_hash(__enum_hash const&) = delete; ^ In file included from /Users/user/Developer/Project/generated-src/jni/NativeSetMap.cpp:4: In file included from ../../../../../../../generated-src/jni/NativeSetMap.hpp:6: In file included from ../../../../../../../deps/djinni/support-lib/jni/djinni_support.hpp:21: /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/memory:2227:41: error: call to implicitly-deleted default constructor of '__compressed_pair_elem, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, 1>' : _Base1(std::forward<_Tp>(__t)), _Base2() {} ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:1436:7: note: in instantiation of function template specialization 'std::__ndk1::__compressed_pair, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > > >::__compressed_pair' requested here : __p2_(0), ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/unordered_set:415:5: note: in instantiation of member function 'std::__ndk1::__hash_table, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > > >::__hash_table' requested here unordered_set() ^ ../../../../../../../deps/djinni/support-lib/jni/Marshal.hpp:423:22: note: in instantiation of member function 'std::__ndk1::unordered_set, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > > >::unordered_set' requested here auto c = CppType(); ^ /Users/user/Developer/Project/generated-src/jni/NativeSetMap.cpp:25:79: note: in instantiation of member function 'djinni::Set >::toCpp' requested here return {::djinni::Set<::djinni::Map<::djinni::String, ::djinni::String>>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mSetMap))}; ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/memory:2165:39: note: explicitly defaulted function was implicitly deleted here _LIBCPP_INLINE_VISIBILITY constexpr __compressed_pair_elem() = default; ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/memory:2158:50: note: default constructor of '__compressed_pair_elem, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, 1, true>' is implicitly deleted because base class 'std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >' has a deleted default constructor struct __compressed_pair_elem<_Tp, _Idx, true> : private _Tp { ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/utility:1548:36: note: default constructor of 'hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >' is implicitly deleted because base class '__enum_hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >' has a deleted default constructor struct _LIBCPP_TEMPLATE_VIS hash : public __enum_hash<_Tp> ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/utility:1542:5: note: '__enum_hash' has been explicitly marked deleted here __enum_hash() = delete; ^ In file included from /Users/user/Developer/Project/generated-src/jni/NativeSetMap.cpp:4: In file included from ../../../../../../../generated-src/jni/NativeSetMap.hpp:7: In file included from ../../../../../../../generated-src/cpp/set_map.hpp:7: In file included from /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/unordered_map:402: /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:2120:21: error: type 'std::__ndk1::__hash_table, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > > >::hasher' (aka 'std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >') does not provide a call operator size_t __hash = hash_function()(__k); ^~~~~~~~~~~~~~~ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:1146:14: note: in instantiation of function template specialization 'std::__ndk1::__hash_table, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > > >::__emplace_unique_key_args, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > >, std::__ndk1::unordered_map, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >' requested here return __emplace_unique_key_args(_NodeTypes::__get_key(__x), _VSTD::move(__x)); ^ /Applications/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/unordered_set:543:26: note: in instantiation of member function 'std::__ndk1::__hash_table, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > > >::__insert_unique' requested here {return __table_.__insert_unique(_VSTD::move(__x));} ^ ../../../../../../../deps/djinni/support-lib/jni/Marshal.hpp:430:19: note: in instantiation of member function 'std::__ndk1::unordered_set, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > >, std::__ndk1::hash, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::equal_to, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator >, std::__ndk1::hash, std::__ndk1::allocator > >, std::__ndk1::equal_to, std::__ndk1::allocator > >, std::__ndk1::allocator, std::__ndk1::allocator >, std::__ndk1::basic_string, std::__ndk1::allocator > > > > > >::insert' requested here c.insert(T::Boxed::toCpp(jniEnv, static_cast(je.get()))); ^ /Users/user/Developer/Project/generated-src/jni/NativeSetMap.cpp:25:79: note: in instantiation of member function 'djinni::Set >::toCpp' requested here return {::djinni::Set<::djinni::Map<::djinni::String, ::djinni::String>>::toCpp(jniEnv, jniEnv->GetObjectField(j, data.field_mSetMap))}; ^ 4 errors generated. ninja: build stopped: subcommand failed. ```
artwyman commented 5 years ago

I'm not sure this is expected to work, since it's not supported in the underlying languages. You can't use a list/map/set as the "key" in a map (or the element in a set which is also a kind of key). E.g. try to declare a unordered_set<vector<int>> in C++ and it'll fail in the same way, independent of Djinni.

It might be nice if Djinni ruled this out directly (thus the "enhancement" tag I put on this issue, rather than "bug"), but in general we've been a bit loose about the generator just doing what it's told to do, and relying on the compiler to flag illegal cases like this.