Range-v3 Range algorithms, views, and actions for the Standard Library |

Public Member Functions | List of all members
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>
T | operator() (I1 begin1, S1 end1, I2 begin2, S2 end2, T init, BOp1 bop1=BOp1{}, BOp2 bop2=BOp2{}, P1 proj1=P1{}, P2 proj2=P2{}) const
template<typename I1 , typename S1 , typename I2 , typename T , typename BOp1 = plus, typename BOp2 = multiplies, typename P1 = identity, typename P2 = identity>
T | operator() (I1 begin1, S1 end1, I2 begin2, T init, BOp1 bop1=BOp1{}, BOp2 bop2=BOp2{}, P1 proj1=P1{}, P2 proj2=P2{}) const
template<typename Rng1 , typename I2Ref , typename T , typename BOp1 = plus, typename BOp2 = multiplies, typename P1 = identity, typename P2 = identity, typename I1 = iterator_t<Rng1>, typename I2 = uncvref_t<I2Ref>>
T | operator() (Rng1 &&rng1, I2Ref &&begin2, T init, BOp1 bop1=BOp1{}, BOp2 bop2=BOp2{}, P1 proj1=P1{}, P2 proj2=P2{}) const
template<typename Rng1 , typename Rng2 , typename T , typename BOp1 = plus, typename BOp2 = multiplies, typename P1 = identity, typename P2 = identity, typename I1 = iterator_t<Rng1>, typename I2 = iterator_t<Rng2>>
T | operator() (Rng1 &&rng1, Rng2 &&rng2, T init, BOp1 bop1=BOp1{}, BOp2 bop2=BOp2{}, P1 proj1=P1{}, P2 proj2=P2{}) const

## Member Function Documentation

## ◆ operator()() [1/4]

template<typename I1 , typename S1 , typename I2 , typename S2 , typename T , typename BOp1 = plus, typename BOp2 = multiplies, typename P1 = identity, typename P2 = identity>

T ranges::inner_product_fn::operator() | ( | I1 | begin1,
|  | S1 | end1,
|  | I2 | begin2,
|  | S2 | end2,
|  | T | init,
|  | BOp1 | bop1 = `BOp1{}`,
|  | BOp2 | bop2 = `BOp2{}`,
|  | P1 | proj1 = `P1{}`,
|  | P2 | proj2 = `P2{}`
| ) |  | const

Precondition
  requires `sentinel_for<S1, I1> && sentinel_for<S2, I2> && inner_product_constraints<I1, I2, T, BOp1, BOp2, P1, P2>`

## ◆ operator()() [2/4]

template<typename I1 , typename S1 , typename I2 , typename T , typename BOp1 = plus, typename BOp2 = multiplies, typename P1 = identity, typename P2 = identity>

T ranges::inner_product_fn::operator() | ( | I1 | begin1,
|  | S1 | end1,
|  | I2 | begin2,
|  | T | init,
|  | BOp1 | bop1 = `BOp1{}`,
|  | BOp2 | bop2 = `BOp2{}`,
|  | P1 | proj1 = `P1{}`,
|  | P2 | proj2 = `P2{}`
| ) |  | const

Precondition
  requires `sentinel_for<S1, I1> && inner_product_constraints<I1, I2, T, BOp1, BOp2, P1, P2>`

## ◆ operator()() [3/4]

template<typename Rng1 , typename I2Ref , typename T , typename BOp1 = plus, typename BOp2 = multiplies, typename P1 = identity, typename P2 = identity, typename I1 = iterator_t<Rng1>, typename I2 = uncvref_t<I2Ref>>

T ranges::inner_product_fn::operator() | ( | Rng1 && | rng1,
|  | I2Ref && | begin2,
|  | T | init,
|  | BOp1 | bop1 = `BOp1{}`,
|  | BOp2 | bop2 = `BOp2{}`,
|  | P1 | proj1 = `P1{}`,
|  | P2 | proj2 = `P2{}`
| ) |  | const

Precondition
  requires `range<Rng1> && inner_product_constraints<I1, I2, T, BOp1, BOp2, P1, P2>`

## ◆ operator()() [4/4]

template<typename Rng1 , typename Rng2 , typename T , typename BOp1 = plus, typename BOp2 = multiplies, typename P1 = identity, typename P2 = identity, typename I1 = iterator_t<Rng1>, typename I2 = iterator_t<Rng2>>

T ranges::inner_product_fn::operator() | ( | Rng1 && | rng1,
|  | Rng2 && | rng2,
|  | T | init,
|  | BOp1 | bop1 = `BOp1{}`,
|  | BOp2 | bop2 = `BOp2{}`,
|  | P1 | proj1 = `P1{}`,
|  | P2 | proj2 = `P2{}`
| ) |  | const

Precondition
  requires `range<Rng1> && range<Rng2> && inner_product_constraints<I1, I2, T, BOp1, BOp2, P1, P2>`