diff --git a/src/OpenMesh/Core/Geometry/Vector11T.hh b/src/OpenMesh/Core/Geometry/Vector11T.hh index 4d8792aa..fe0b92b2 100644 --- a/src/OpenMesh/Core/Geometry/Vector11T.hh +++ b/src/OpenMesh/Core/Geometry/Vector11T.hh @@ -376,13 +376,10 @@ class VectorT { /// \see OpenMesh::dot template auto operator|(const VectorT& _rhs) const -> - decltype(this->values_[0] * _rhs[0]) { + decltype(*data() * *_rhs.data()) { - auto p = values_[0] * _rhs[0]; - for (int i = 1; i < DIM; ++i) { - p += values_[i] * _rhs[i]; - } - return p; + return std::inner_product(data() + 1, data() + DIM, _rhs.data() + 1, + *data() * *_rhs.data()); } //------------------------------------------------------------ euclidean norm