From c8a634f365ca0c8bf0a0d589119b6f07a3dd6634 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20M=C3=B6ller?= Date: Wed, 14 Jan 2015 13:13:14 +0000 Subject: [PATCH] - compiler error instead of run-time error when using a constructor which doesn't belongs to the vector's dimension git-svn-id: http://www.openmesh.org/svnrepo/OpenMesh/trunk@1194 fdac6126-5c0c-442c-9429-916003d36597 --- src/OpenMesh/Core/Geometry/VectorT_inc.hh | 31 +++++++++++++---------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/src/OpenMesh/Core/Geometry/VectorT_inc.hh b/src/OpenMesh/Core/Geometry/VectorT_inc.hh index 45ddcf7b..da20090e 100644 --- a/src/OpenMesh/Core/Geometry/VectorT_inc.hh +++ b/src/OpenMesh/Core/Geometry/VectorT_inc.hh @@ -95,39 +95,44 @@ public: vectorize(v); } +#if DIM == 2 /// special constructor for 2D vectors - inline VectorT(const Scalar& v0, const Scalar& v1) { - assert(DIM==2); + inline VectorT(const Scalar v0, const Scalar v1) { Base::values_[0] = v0; Base::values_[1] = v1; } +#endif +#if DIM == 3 /// special constructor for 3D vectors - inline VectorT(const Scalar& v0, const Scalar& v1, const Scalar& v2) { - assert(DIM==3); + inline VectorT(const Scalar v0, const Scalar v1, const Scalar v2) { Base::values_[0]=v0; Base::values_[1]=v1; Base::values_[2]=v2; } +#endif +#if DIM == 4 /// special constructor for 4D vectors - inline VectorT(const Scalar& v0, const Scalar& v1, - const Scalar& v2, const Scalar& v3) { - assert(DIM==4); + inline VectorT(const Scalar v0, const Scalar v1, + const Scalar v2, const Scalar v3) { Base::values_[0]=v0; Base::values_[1]=v1; Base::values_[2]=v2; Base::values_[3]=v3; } +#endif +#if DIM == 5 /// special constructor for 5D vectors - inline VectorT(const Scalar& v0, const Scalar& v1, const Scalar& v2, - const Scalar& v3, const Scalar& v4) { - assert(DIM==5); + inline VectorT(const Scalar v0, const Scalar v1, const Scalar v2, + const Scalar v3, const Scalar v4) { Base::values_[0]=v0; Base::values_[1]=v1;Base::values_[2]=v2; Base::values_[3]=v3; Base::values_[4]=v4; } +#endif +#if DIM == 6 /// special constructor for 6D vectors - inline VectorT(const Scalar& v0, const Scalar& v1, const Scalar& v2, - const Scalar& v3, const Scalar& v4, const Scalar& v5) { - assert(DIM==6); + inline VectorT(const Scalar v0, const Scalar v1, const Scalar v2, + const Scalar v3, const Scalar v4, const Scalar v5) { Base::values_[0]=v0; Base::values_[1]=v1; Base::values_[2]=v2; Base::values_[3]=v3; Base::values_[4]=v4; Base::values_[5]=v5; } +#endif /// construct from a value array (explicit) explicit inline VectorT(const Scalar _values[DIM]) {