Does not compile on gcc 8.3 with no-rtti (pmr)
Opened this issue · 0 comments
greenrobot commented
For crosscompiling, we rely on older compiler versions.
Because of pmr (we do not do anything with pmr), compilation fails.
Does it require pmr internally, or only if the user uses it? Maybe it could "just" be disabled completely? I think pmr is not a great dependency to have: while compilers support C++17 for a long time, pmr only came with gcc 9. And relying on "experimental" API (pre gcc 9) does not make one very comfortable, either.
In file included from ../../../../../../../objectbox/src/main/cpp/external/unordered-dense/unordered_dense.h:107,
from ...
/opt/aarch64-linux-gnu/aarch64-linux-gnu/include/c++/8.3.0/experimental/memory_resource: In instantiation of 'bool std::experimental::fundamentals_v2::pmr::__resource_adaptor_imp<_Alloc>::do_is_equal(const std::experimental::fundamentals_v2::pmr::memory_resource&) const [with _Alloc = std::allocator<char>]':
/opt/aarch64-linux-gnu/aarch64-linux-gnu/include/c++/8.3.0/experimental/memory_resource:320:7: required from here
/opt/aarch64-linux-gnu/aarch64-linux-gnu/include/c++/8.3.0/experimental/memory_resource:322:13: error: 'dynamic_cast' not permitted with -fno-rtti
auto __p = dynamic_cast<const __resource_adaptor_imp*>(&__other);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gmake[3]: *** [src/CMakeFiles/something.dir/hnsw/HnswTypes.cpp.o] Error 1
gmake[3]: *** Waiting for unfinisgmake[3]: *** [src/CMakeFiles/something.dir/hnsw/HnswTypes.cpp.o] Error 1
hed jobs....
In file included from ../../../../../../../external/unordered-dense/unordered_dense.h:107,
from ...
/opt/aarch64-linux-gnu/aarch64-linux-gnu/include/c++/8.3.0/experimental/memory_resource: In instantiation of 'bool std::experimental::fundamentals_v2::pmr::__resource_adaptor_imp<_Alloc>::do_is_equal(const std::experimental::fundamentals_v2::pmr::memory_resource&) const [with _Alloc = std::allocator<char>]':
/opt/aarch64-linux-gnu/aarch64-linux-gnu/include/c++/8.3.0/experimental/memory_resource:320:7: required from here
/opt/aarch64-linux-gnu/aarch64-linux-gnu/include/c++/8.3.0/experimental/memory_resource:322:13: error: 'dynamic_cast' not permitted with -fno-rtti
auto __p = dynamic_cast<const __resource_adaptor_imp*>(&__other);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~