@@ -769,7 +769,7 @@ namespace xt
769769 };
770770
771771 template <class IT , class F >
772- inline std::size_t cmp_idx (IT iter, IT end, std::ptrdiff_t inc, F&& cmp)
772+ inline xtensor< std::size_t , 0 > cmp_idx (IT iter, IT end, std::ptrdiff_t inc, F&& cmp)
773773 {
774774 std::size_t idx = 0 ;
775775 auto min = *iter;
@@ -782,7 +782,7 @@ namespace xt
782782 idx = i;
783783 }
784784 }
785- return idx;
785+ return xtensor<std:: size_t , 0 >{ idx} ;
786786 }
787787
788788 template <layout_type L, class E , class F >
@@ -857,7 +857,10 @@ namespace xt
857857 {
858858 using value_type = typename E::value_type;
859859 auto && ed = eval (e.derived_cast ());
860- return detail::arg_func_impl<L>(ed, std::less<value_type>());
860+ auto begin = ed.template begin <L>();
861+ auto end = ed.template end <L>();
862+ std::size_t i = std::distance (begin, std::min_element (begin, end));
863+ return xtensor<size_t , 0 >{i};
861864 }
862865
863866 /* *
@@ -884,7 +887,10 @@ namespace xt
884887 {
885888 using value_type = typename E::value_type;
886889 auto && ed = eval (e.derived_cast ());
887- return detail::arg_func_impl<L>(ed, std::greater<value_type>());
890+ auto begin = ed.template begin <L>();
891+ auto end = ed.template end <L>();
892+ std::size_t i = std::distance (begin, std::max_element (begin, end));
893+ return xtensor<size_t , 0 >{i};
888894 }
889895
890896 /* *
0 commit comments