C++11: Legacy incompatibility fixes for VectorT C++11 features.

This commit is contained in:
Hans-Christian Ebke
2015-11-09 21:21:19 +01:00
parent c2c627ed4d
commit 26914cba92
2 changed files with 13 additions and 3 deletions

View File

@@ -80,6 +80,7 @@
#ifdef CPP11_ENABLED #ifdef CPP11_ENABLED
#include <array> #include <array>
#include <initializer_list> #include <initializer_list>
#include <type_traits>
#endif #endif
//== NAMESPACES =============================================================== //== NAMESPACES ===============================================================

View File

@@ -98,11 +98,11 @@ public:
inline VectorT() {} inline VectorT() {}
#ifdef CPP11_ENABLED #ifdef CPP11_ENABLED
explicit inline VectorT(const Scalar& v) { explicit inline VectorT(const Scalar &v) {
vectorize(v); vectorize(v);
} }
template<typename... T> template<typename... T, typename = typename std::enable_if<sizeof...(T) == DIM>::type>
constexpr VectorT(T... vs) : Base {vs...} constexpr VectorT(T... vs) : Base {vs...}
{ } { }
#else #else
@@ -154,9 +154,10 @@ public:
} }
#endif #endif
#endif #endif
/// construct from a value array (explicit) /// construct from a value array (explicit)
explicit inline VectorT(const Scalar _values[DIM]) { 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 // /// cast to const Scalar array
// inline operator const Scalar*() const { return Base::values_; } // 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 /// access to Scalar array
inline Scalar* data() { return Base::values_; } inline Scalar* data() { return Base::values_; }
/// access to const Scalar array /// access to const Scalar array
inline const Scalar*data() const { return Base::values_; } inline const Scalar*data() const { return Base::values_; }
#endif