diff --git a/Modules/Core/Functor/include/otbVariadicNamedInputsImageFilter.h b/Modules/Core/Functor/include/otbVariadicNamedInputsImageFilter.h index 3110a0ef478fe52ac28180b6654e3ceefe83efdf..250e9acbeacad2bd76c4f501eeb1d3789b1f3125 100644 --- a/Modules/Core/Functor/include/otbVariadicNamedInputsImageFilter.h +++ b/Modules/Core/Functor/include/otbVariadicNamedInputsImageFilter.h @@ -62,6 +62,11 @@ public: constexpr size_t idx = internal::tuple_index<Tag, TInputNameMap>::value; this->SetNthInput(idx,const_cast<InputImageType<idx> *>(inputPtr)); } + + template <typename Tag> void SetVariadicNamedInput(Tag,const InputImageType<internal::tuple_index<Tag, TInputNameMap>::value> * inputPtr) + { + SetVariadicNamedInput<Tag>(inputPtr); + } template <typename Tag> const InputImageType<internal::tuple_index<Tag,TInputNameMap>::value> * GetVariadicNamedInput() { @@ -69,6 +74,11 @@ public: return dynamic_cast<const InputImageType<idx> *>(this->GetInput(idx)); } + template <typename Tag> const InputImageType<internal::tuple_index<Tag,TInputNameMap>::value> * GetVariadicNamedInput(Tag) + { + return GetVariadicNamedInput<Tag>(); + } + protected: VariadicNamedInputsImageFilter() = default; ~VariadicNamedInputsImageFilter() = default; diff --git a/Modules/Core/Functor/test/otbFunctorImageFilter.cxx b/Modules/Core/Functor/test/otbFunctorImageFilter.cxx index 464a4086b9eef59319754d841c5efb3cced2b3d3..29318cd5ff20a10ba1653081321e51bdc7576d3f 100644 --- a/Modules/Core/Functor/test/otbFunctorImageFilter.cxx +++ b/Modules/Core/Functor/test/otbFunctorImageFilter.cxx @@ -156,7 +156,9 @@ template <typename TOut,typename TIn> struct TestOperatorVoidReturn using inputNames = std::tuple<tag>; auto filter1 = NewFunctorFilter<decltype(functor),inputNames>(functor); filter1->template SetVariadicNamedInput<tag>(in); + filter1->SetVariadicNamedInput(tag{},in); res = filter1->template GetVariadicNamedInput<tag>(); + res = filter1->GetVariadicNamedInput(tag{}); filter1->Update(); // Test with void return