Hello,
so we are using the MCU+SDK and its Clang Compiler (ti-cgt-armllvm_1.2.1.STS) and we want to use the std::apply function.
But it does not work since it throws this compiler-error:
In file included from C:\Pr\firmware\modules\balluff-platform\BuildInfrastructure\Sources\balluff-platform\Pattern\..\..\..\..\Sources\balluff-platform\Pattern\Includes\States.hpp:12: C:\ti\ti-cgt-armllvm_1.2.1.STS\include\c++\v1\tuple:1416:5: error: attempt to use a deleted function _VSTD::__invoke_constexpr( ^ C:\ti\ti-cgt-armllvm_1.2.1.STS\include\c++\v1\__config:833:15: note: expanded from macro '_VSTD' #define _VSTD std::_LIBCPP_ABI_NAMESPACE ^ C:\ti\ti-cgt-armllvm_1.2.1.STS\include\c++\v1\tuple:1413:26: note: in instantiation of exception specification for '__apply_tuple_impl<void (balluff::platform::bce::InterfaceCalleeFunction<void, balluff::platform::internals::OperationModes>::*)(balluff::platform::internals::OperationModes), std::tuple<balluff::platform::internals::OperationModes> &, 0>' requested here constexpr decltype(auto) __apply_tuple_impl(_Fn && __f, _Tuple && __t, ^ C:\ti\ti-cgt-armllvm_1.2.1.STS\include\c++\v1\tuple:1425:12: note: in instantiation of function template specialization 'std::__apply_tuple_impl<void (balluff::platform::bce::InterfaceCalleeFunction<void, balluff::platform::internals::OperationModes>::*)(balluff::platform::internals::OperationModes), std::tuple<balluff::platform::internals::OperationModes> &, 0>' requested here _VSTD::__apply_tuple_impl( ^ C:\ti\ti-cgt-armllvm_1.2.1.STS\include\c++\v1\tuple:1423:26: note: in instantiation of exception specification for 'apply<void (balluff::platform::bce::InterfaceCalleeFunction<void, balluff::platform::internals::OperationModes>::*)(balluff::platform::internals::OperationModes), std::tuple<balluff::platform::internals::OperationModes> &>' requested here constexpr decltype(auto) apply(_Fn && __f, _Tuple && __t) ^ C:\XX/InterfaceASyncCallee.hpp:84:18: note: in instantiation of function template specialization 'std::apply<void (balluff::platform::bce::InterfaceCalleeFunction<void, balluff::platform::internals::OperationModes>::*)(balluff::platform::internals::OperationModes), std::tuple<balluff::platform::internals::OperationModes> &>' requested here std::apply(&InterfaceCalleeFunction<void, TParams...>::call, data_.front()); ^ C:\ti\ti-cgt-armllvm_1.2.1.STS\include\c++\v1\type_traits:1916:5: note: '~__nat' has been explicitly marked deleted here ~__nat() = delete; ^
my call looks like the following:
std::apply(&InterfaceCalleeFunction<void, TParams...>::call, data_.front());
where data_ is just a small queue with the tuple inside:
etl::queue<std::tuple<TParams...>, MAX_QUEUED_ASYNC_CALLS> data_;
my call-function looks like this:
void call(TParams... data);
What I am doing wrong?
Best regards
Felix