| template<class XX , class RX = RemoveReference<XX>, class TX = typename RX::Type, class VX = typename TX::Value, If< IsTensorish< RX > > = 0, class RXE = RemoveConstReference<ResultOf<Eval, XX>>, class FF , If< IsInvocable< FF, RXE const &, RXE & > > = 0, If< IsFloat< ResultOf< FF, RXE const &, RXE & > > > = 0, class FC , If< IsInvocable< FC, RXE > > = 0, class XL = decltype(unit<RX>(NumericLimits<VX>::lowest())), class RL = RemoveReference<XL>, class TL = typename RL::Type, class VL = typename TL::Value, If< IsTensorish< RL > > = 0, class XU = decltype(unit<RX>(NumericLimits<VX>::max())), class RU = RemoveReference<XU>, class TU = typename RU::Type, class VU = typename TU::Value, If< IsTensorish< RU > > = 0, class VT = Common<VX, VL, VU>, If< All< IsFloat< VX >, IsFloat< VT > > > = 0, If< IsSame< typename RX::Dimension, typename RL::Dimension, typename RU::Dimension > > = 0, If< IsSame< typename RX::Sizes, typename RL::Sizes, typename RU::Sizes > > = 0, If< IsInvocable< LS, RXE &, ResultOf< FF, RXE const &, RXE & > &, RXE &, VX &, FF, RXE(RXE const &), RXE const &, VX, VX, VX > > = 0> |