Скалярное произведение двух векторов с размером 'N', определенным как SP (a, b) = a_1 * b_1 + ... + a_N * b_N.
Целочисленный вектор времени компиляции, определенный как:
template<int... I>
struct Vector;
Интерфейс продукта функции:
template<typename Vector1, typename Vector2>
constexpr int product
Например, для теста можно использовать следующий код:
static_assert(product<Vector<1, 2, 5>, Vector<1, 3, 4>> == 27);
Как реализовать продукт, чтобы соответствовать утверждению а интерфейс выше?