The scalar product of two vectors with size 'N' defined as SP(a, b) = a_1 * b_1 + ... + a_N * b_N.
Compile-time integer vector defined as:
template<int... I>
struct Vector;
Function product interface:
template<typename Vector1, typename Vector2>
constexpr int product
For example, following code could be used for test:
static_assert(product<Vector<1, 2, 5>, Vector<1, 3, 4>> == 27);
How can product be implemented to match the assert and interface above?