When trying to compile oidn under aarch64 on linux, this error appears at core/network.cpp.
This error does not appear on x86_64. clang and gcc deliver the same results
/home/leon/aports/testing/openimagedenoise/src/oidn-1.4.1/core/pool.h:52:27: error: expected class name
class PoolNode : public BNNSNode
^
/home/leon/aports/testing/openimagedenoise/src/oidn-1.4.1/core/pool.h:80:20: error: only virtual member functions can be marked 'override'
void execute() override
^~~~~~~~
/home/leon/aports/testing/openimagedenoise/src/oidn-1.4.1/core/pool.h:85:44: error: only virtual member functions can be marked 'override'
std::shared_ptr<Tensor> getDst() const override { return dst; }
^~~~~~~~~
/home/leon/aports/testing/openimagedenoise/src/oidn-1.4.1/core/pool.h:62:9: error: member initializer 'BNNSNode' does not name a non-static data member or base class
: BNNSNode(device),
^~~~~~~~~~~~~~~~
/home/leon/aports/testing/openimagedenoise/src/oidn-1.4.1/core/pool.h:65:7: error: unknown type name 'BNNSLayerParametersPooling'
BNNSLayerParametersPooling params = {
^
/home/leon/aports/testing/openimagedenoise/src/oidn-1.4.1/core/pool.h:68:29: error: use of undeclared identifier 'BNNSPoolingFunctionMax'
.pooling_function = BNNSPoolingFunctionMax,
^
/home/leon/aports/testing/openimagedenoise/src/oidn-1.4.1/core/pool.h:75:7: error: use of undeclared identifier 'filter'
filter = BNNSFilterCreateLayerPooling(¶ms, nullptr);
^
/home/leon/aports/testing/openimagedenoise/src/oidn-1.4.1/core/pool.h:76:12: error: use of undeclared identifier 'filter'
if (!filter)
^
/home/leon/aports/testing/openimagedenoise/src/oidn-1.4.1/core/pool.h:82:23: error: use of undeclared identifier 'filter'
BNNSFilterApply(filter, src->data(), dst->data());
^
/home/leon/aports/testing/openimagedenoise/src/oidn-1.4.1/core/network.cpp:116:34: error: use of undeclared identifier 'ConvNode'
auto node = std::make_shared<ConvNode>(device, src, weights, bias, dst, relu);
^
/home/leon/aports/testing/openimagedenoise/src/oidn-1.4.1/core/network.cpp:137:11: error: no matching member function for call to 'push_back'
nodes.push_back(node);
~~~~~~^~~~~~~~~
/usr/bin/../lib/gcc/aarch64-alpine-linux-musl/10.3.1/../../../../include/c++/10.3.1/bits/stl_vector.h:1187:7: note: candidate function not viable: no known conversion from 'shared_ptr<oidn::PoolNode>' to 'const shared_ptr<oidn::Node>' for 1st argument
push_back(const value_type& __x)
^
/usr/bin/../lib/gcc/aarch64-alpine-linux-musl/10.3.1/../../../../include/c++/10.3.1/bits/stl_vector.h:1203:7: note: candidate function not viable: no known conversion from 'shared_ptr<oidn::PoolNode>' to 'shared_ptr<oidn::Node>' for 1st argument
push_back(value_type&& __x)
^
/home/leon/aports/testing/openimagedenoise/src/oidn-1.4.1/core/network.cpp:138:12: error: no viable conversion from returned value of type 'shared_ptr<oidn::PoolNode>' to function return type 'shared_ptr<oidn::Node>'
return node;
^~~~
/usr/bin/../lib/gcc/aarch64-alpine-linux-musl/10.3.1/../../../../include/c++/10.3.1/bits/shared_ptr.h:149:7: note: candidate constructor not viable: no known conversion from 'std::shared_ptr<oidn::PoolNode>' to 'const std::shared_ptr<oidn::Node> &' for 1st argument
shared_ptr(const shared_ptr&) noexcept = default; ///< Copy constructor
^
/usr/bin/../lib/gcc/aarch64-alpine-linux-musl/10.3.1/../../../../include/c++/10.3.1/bits/shared_ptr.h:303:7: note: candidate constructor not viable: no known conversion from 'std::shared_ptr<oidn::PoolNode>' to 'std::shared_ptr<oidn::Node> &&' for 1st argument
shared_ptr(shared_ptr&& __r) noexcept
^
/usr/bin/../lib/gcc/aarch64-alpine-linux-musl/10.3.1/../../../../include/c++/10.3.1/bits/shared_ptr.h:356:17: note: candidate constructor not viable: no known conversion from 'std::shared_ptr<oidn::PoolNode>' to 'std::nullptr_t' (aka 'nullptr_t') for 1st argument
constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { }
^
/usr/bin/../lib/gcc/aarch64-alpine-linux-musl/10.3.1/../../../../include/c++/10.3.1/bits/shared_ptr.h:295:2: note: candidate template ignored: requirement 'is_constructible<std::__shared_ptr<oidn::Node, __gnu_cxx::_S_atomic>, const std::shared_ptr<oidn::PoolNode> &>::value' was not satisfied [with _Yp = oidn::PoolNode]
shared_ptr(const shared_ptr<_Yp>& __r) noexcept
^
/usr/bin/../lib/gcc/aarch64-alpine-linux-musl/10.3.1/../../../../include/c++/10.3.1/bits/shared_ptr.h:312:2: note: candidate template ignored: requirement 'is_constructible<std::__shared_ptr<oidn::Node, __gnu_cxx::_S_atomic>, std::shared_ptr<oidn::PoolNode>>::value' was not satisfied [with _Yp = oidn::PoolNode]
shared_ptr(shared_ptr<_Yp>&& __r) noexcept
^
/usr/bin/../lib/gcc/aarch64-alpine-linux-musl/10.3.1/../../../../include/c++/10.3.1/bits/shared_ptr.h:331:2: note: candidate template ignored: could not match 'auto_ptr' against 'shared_ptr'
shared_ptr(auto_ptr<_Yp>&& __r);
^
/usr/bin/../lib/gcc/aarch64-alpine-linux-musl/10.3.1/../../../../include/c++/10.3.1/bits/shared_ptr.h:339:2: note: candidate template ignored: could not match 'unique_ptr' against 'shared_ptr'
shared_ptr(unique_ptr<_Yp, _Del>&& __r)
^
/usr/bin/../lib/gcc/aarch64-alpine-linux-musl/10.3.1/../../../../include/c++/10.3.1/bits/shared_ptr.h:348:2: note: candidate template ignored: could not match 'unique_ptr' against 'shared_ptr'
shared_ptr(unique_ptr<_Yp, _Del>&& __r)
^
/usr/bin/../lib/gcc/aarch64-alpine-linux-musl/10.3.1/../../../../include/c++/10.3.1/bits/shared_ptr.h:407:2: note: candidate template ignored: could not match '_Sp_alloc_shared_tag' against 'shared_ptr'
shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args)
^
/usr/bin/../lib/gcc/aarch64-alpine-linux-musl/10.3.1/../../../../include/c++/10.3.1/bits/shared_ptr.h:159:2: note: explicit constructor is not a candidate
shared_ptr(_Yp* __p) : __shared_ptr<_Tp>(__p) { }
^
/usr/bin/../lib/gcc/aarch64-alpine-linux-musl/10.3.1/../../../../include/c++/10.3.1/bits/shared_ptr.h:324:11: note: explicit constructor is not a candidate
explicit shared_ptr(const weak_ptr<_Yp>& __r)
^
When trying to compile oidn under aarch64 on linux, this error appears at
core/network.cpp
. This error does not appear on x86_64. clang and gcc deliver the same results