diff --git a/src/Magnum/Math/Vector.h b/src/Magnum/Math/Vector.h index 83060ca9b..bb13dc6ba 100644 --- a/src/Magnum/Math/Vector.h +++ b/src/Magnum/Math/Vector.h @@ -102,7 +102,10 @@ the same general direction, `1` when two *normalized* vectors are parallel, @see @ref Vector::dot() const, @ref Vector::operator-(), @ref Vector2::perpendicular() */ template inline T dot(const Vector& a, const Vector& b) { - return (a*b).sum(); + T out{}; + for(std::size_t i = 0; i != size; ++i) + out += a._data[i]*b._data[i]; + return out; } /** @relatesalso Vector @@ -686,6 +689,8 @@ template class Vector { template friend BoolVector equal(const Vector&, const Vector&); template friend BoolVector notEqual(const Vector&, const Vector&); + template friend U dot(const Vector&, const Vector&); + /* Implementation for Vector::Vector(const Vector&) */ template constexpr explicit Vector(Implementation::Sequence, const Vector& vector) noexcept: _data{T(vector._data[sequence])...} {}