ranges::inner_product_fn Struct Reference
Numerics

## Public Member Functions

template<typename I1 , typename S1 , typename I2 , typename S2 , typename T , typename BOp1 = plus, typename BOp2 = multiplies, typename P1 = identity, typename P2 = identity>
CPP_TEMPLATE_AUX_0 | T (requires sentinel_for< S1, I1 > &&sentinel_for< S2, I2 > &&inner_product_constraints< I1, I2, T, BOp1, BOp2, P1, P2 >) TTT operator()(I1 begin1

## Public Attributes

CPP_TEMPLATE_AUX_0 S1 I2 | begin2
CPP_TEMPLATE_AUX_0 S1 I2 S2 T BOp1 | bop1 = BOp1{}
CPP_TEMPLATE_AUX_0 S1 I2 S2 T BOp1 BOp2 P1 P2 | BOp1 = plus
CPP_TEMPLATE_AUX_0 S1 I2 S2 T BOp1 BOp2 | bop2 = BOp2{}
CPP_TEMPLATE_AUX_0 S1 I2 S2 T BOp1 BOp2 P1 P2 | BOp2 = multiplies
CPP_TEMPLATE_AUX_0 S1 | end1
CPP_TEMPLATE_AUX_0 S1 I2 S2 | end2
CPP_TEMPLATE_AUX_0 S1 I2 S2 T BOp1 BOp2 P1 P2 | I1 = iterator_t<Rng1>
CPP_TEMPLATE_AUX_0 S1 I2 S2 T BOp1 BOp2 P1 P2 | I2
CPP_TEMPLATE_AUX_0 S1 I2 S2 T BOp1 BOp2 P1 P2 | I2Ref
CPP_TEMPLATE_AUX_0 S1 I2 S2 T | init
CPP_TEMPLATE_AUX_0 S1 I2 S2 T BOp1 BOp2 P1 P2 | P1 = identity
CPP_TEMPLATE_AUX_0 S1 I2 S2 T BOp1 BOp2 P1 P2 | P2
CPP_TEMPLATE_AUX_0 S1 I2 S2 T BOp1 BOp2 P1 | proj1 = P1{}
CPP_TEMPLATE_AUX_0 S1 I2 S2 T BOp1 BOp2 P1 P2 | proj2
CPP_TEMPLATE_AUX_0 S1 I2 S2 T BOp1 BOp2 P1 P2 | Rng2
CPP_TEMPLATE_AUX_0 S1 I2 S2 T BOp1 BOp2 P1 P2 | S1
CPP_TEMPLATE_AUX_0 S1 I2 S2 T BOp1 BOp2 P1 P2 | T

## Member Data Documentation

## I2

CPP_TEMPLATE_AUX_0 S1 I2 S2 T BOp1 BOp2 P1 P2 ranges::inner_product_fn::I2

Initial value:
= uncvref_t<I2Ref> > CPP_TEMPLATE_AUX_0 T( requires range<Rng1> &&
inner_product_constraints<I1, I2, T, BOp1, BOp2, P1, P2> )TTT operator()(Rng1 && rng1, I2Ref && begin2, T init, BOp1 bop1 = BOp1{},
BOp2 bop2 = BOp2{}, P1 proj1 = P1{}, P2 proj2 = P2{}) const
{
return (*this)(begin(rng1),
end(rng1),
static_cast<I2Ref &&>(begin2),
std::move(init),
std::move(bop1),
std::move(bop2),
std::move(proj1),
std::move(proj2));
}
template< typename Rng1
CPP_TEMPLATE_AUX_0
#define CPP_TEMPLATE_AUX_0(...)
INTERNAL ONLY.
Definition: concepts.hpp:243
ranges::begin
constexpr _begin_::fn begin
Definition: access.hpp:182
ranges::end
constexpr _end_::fn end
Definition: access.hpp:313
ranges::aux::move
constexpr move_fn move
Definition: move.hpp:52
meta::requires
requires(sizeof...(Ts) > 0) using lambda
For creating anonymous Invocables.

## P2

CPP_TEMPLATE_AUX_0 S1 I2 S2 T BOp1 BOp2 P1 P2 ranges::inner_product_fn::P2

Initial value:
= identity > CPP_TEMPLATE_AUX_0 T( requires sentinel_for<S1, I1> &&
inner_product_constraints<I1, I2, T, BOp1, BOp2, P1, P2> )TTT operator()(I1 begin1, S1 end1, I2 begin2, T init, BOp1 bop1 = BOp1{},
BOp2 bop2 = BOp2{}, P1 proj1 = P1{}, P2 proj2 = P2{}) const
{
return (*this)(std::move(begin1),
std::move(end1),
std::move(begin2),
unreachable,
std::move(init),
std::move(bop1),
std::move(bop2),
std::move(proj1),
std::move(proj2));
}
template< typename Rng1

## proj2

CPP_TEMPLATE_AUX_0 S1 I2 S2 T BOp1 BOp2 P1 P2 ranges::inner_product_fn::proj2

Initial value:
= P2{}) const
{
for(; begin1 != end1 && begin2 != end2; ++begin1, ++begin2)
init =
invoke(bop1,
init,
invoke(bop2, invoke(proj1, *begin1), invoke(proj2, *begin2)));
return init;
}
template< typename I1
meta::invoke
typename Fn::template invoke< Args... > invoke
Evaluate the invocable Fn with the arguments Args.
Definition: meta.hpp:541