From 26914cba92731a517de7c25a010b303ea84bd791 Mon Sep 17 00:00:00 2001 From: Hans-Christian Ebke Date: Mon, 9 Nov 2015 21:21:19 +0100 Subject: [PATCH] C++11: Legacy incompatibility fixes for VectorT C++11 features. --- src/OpenMesh/Core/Geometry/VectorT.hh | 1 + src/OpenMesh/Core/Geometry/VectorT_inc.hh | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/OpenMesh/Core/Geometry/VectorT.hh b/src/OpenMesh/Core/Geometry/VectorT.hh index 9dad0795..38a463e8 100644 --- a/src/OpenMesh/Core/Geometry/VectorT.hh +++ b/src/OpenMesh/Core/Geometry/VectorT.hh @@ -80,6 +80,7 @@ #ifdef CPP11_ENABLED #include #include +#include #endif //== NAMESPACES =============================================================== diff --git a/src/OpenMesh/Core/Geometry/VectorT_inc.hh b/src/OpenMesh/Core/Geometry/VectorT_inc.hh index b0c682e8..6fd4d3c3 100644 --- a/src/OpenMesh/Core/Geometry/VectorT_inc.hh +++ b/src/OpenMesh/Core/Geometry/VectorT_inc.hh @@ -98,11 +98,11 @@ public: inline VectorT() {} #ifdef CPP11_ENABLED - explicit inline VectorT(const Scalar& v) { + explicit inline VectorT(const Scalar &v) { vectorize(v); } - template + template::type> constexpr VectorT(T... vs) : Base {vs...} { } #else @@ -154,9 +154,10 @@ public: } #endif #endif + /// construct from a value array (explicit) explicit inline VectorT(const Scalar _values[DIM]) { - memcpy(Base::values_, _values, DIM*sizeof(Scalar)); + memcpy(data(), _values, DIM*sizeof(Scalar)); } @@ -196,11 +197,19 @@ public: // /// cast to const Scalar array // inline operator const Scalar*() const { return Base::values_; } +#ifdef CPP11_ENABLED + /// access to Scalar array + inline Scalar* data() { return Base::values_.data(); } + + /// access to const Scalar array + inline const Scalar*data() const { return Base::values_.data(); } +#else /// access to Scalar array inline Scalar* data() { return Base::values_; } /// access to const Scalar array inline const Scalar*data() const { return Base::values_; } +#endif