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