diff options
author | Mehdi Goli <mehdi.goli@codeplay.com> | 2019-10-23 15:56:56 +0100 |
---|---|---|
committer | Mehdi Goli <mehdi.goli@codeplay.com> | 2019-10-23 15:56:56 +0100 |
commit | 6332aff0b2487d8db31b9a79934b725415e1c488 (patch) | |
tree | b5b75317fed83170deb5ebfddd955ffa9d119054 /unsupported/Eigen/CXX11 | |
parent | 8e4e29ae99414a60bc6b01780ca88ee85c83ba76 (diff) |
This PR fixes:
* The specialization of array class in the different namespace for GCC<=6.4
* The implicit call to `std::array` constructor using the initializer list for GCC <=6.1
Diffstat (limited to 'unsupported/Eigen/CXX11')
-rw-r--r-- | unsupported/Eigen/CXX11/src/util/CXX11Meta.h | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/unsupported/Eigen/CXX11/src/util/CXX11Meta.h b/unsupported/Eigen/CXX11/src/util/CXX11Meta.h index 86f56b9bd..1f34fca27 100644 --- a/unsupported/Eigen/CXX11/src/util/CXX11Meta.h +++ b/unsupported/Eigen/CXX11/src/util/CXX11Meta.h @@ -28,43 +28,43 @@ class array : public std::array<T, N> { array() : Base() {} EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE - array(const T& v) : Base{v} { + array(const T& v) : Base{{v}} { EIGEN_STATIC_ASSERT(N == 1, YOU_MADE_A_PROGRAMMING_MISTAKE); } EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE - array(const T& v1, const T& v2) : Base{v1, v2} { + array(const T& v1, const T& v2) : Base{{v1, v2}} { EIGEN_STATIC_ASSERT(N == 2, YOU_MADE_A_PROGRAMMING_MISTAKE); } EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE - array(const T& v1, const T& v2, const T& v3) : Base{v1, v2, v3} { + array(const T& v1, const T& v2, const T& v3) : Base{{v1, v2, v3}} { EIGEN_STATIC_ASSERT(N == 3, YOU_MADE_A_PROGRAMMING_MISTAKE); } EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE array(const T& v1, const T& v2, const T& v3, const T& v4) - : Base{v1, v2, v3, v4} { + : Base{{v1, v2, v3, v4}} { EIGEN_STATIC_ASSERT(N == 4, YOU_MADE_A_PROGRAMMING_MISTAKE); } EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE array(const T& v1, const T& v2, const T& v3, const T& v4, const T& v5) - : Base{v1, v2, v3, v4, v5} { + : Base{{v1, v2, v3, v4, v5}} { EIGEN_STATIC_ASSERT(N == 5, YOU_MADE_A_PROGRAMMING_MISTAKE); } EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE array(const T& v1, const T& v2, const T& v3, const T& v4, const T& v5, - const T& v6) : Base{v1, v2, v3, v4, v5, v6} { + const T& v6) : Base{{v1, v2, v3, v4, v5, v6}} { EIGEN_STATIC_ASSERT(N == 6, YOU_MADE_A_PROGRAMMING_MISTAKE); } EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE array(const T& v1, const T& v2, const T& v3, const T& v4, const T& v5, const T& v6, const T& v7) - : Base{v1, v2, v3, v4, v5, v6, v7} { + : Base{{v1, v2, v3, v4, v5, v6, v7}} { EIGEN_STATIC_ASSERT(N == 7, YOU_MADE_A_PROGRAMMING_MISTAKE); } EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE array(const T& v1, const T& v2, const T& v3, const T& v4, const T& v5, const T& v6, const T& v7, const T& v8) - : Base{v1, v2, v3, v4, v5, v6, v7, v8} { + : Base{{v1, v2, v3, v4, v5, v6, v7, v8}} { EIGEN_STATIC_ASSERT(N == 8, YOU_MADE_A_PROGRAMMING_MISTAKE); } #if EIGEN_HAS_VARIADIC_TEMPLATES @@ -76,14 +76,15 @@ class array : public std::array<T, N> { #endif }; -template<typename T, std::size_t N> struct internal::array_size<const array<T,N> > { +namespace internal { + +template<typename T, std::size_t N> struct array_size<const array<T,N> > { enum { value = N }; }; -template<typename T, std::size_t N> struct internal::array_size<array<T,N> > { +template<typename T, std::size_t N> struct array_size<array<T,N> > { enum { value = N }; }; -namespace internal { /* std::get is only constexpr in C++14, not yet in C++11 * - libstdc++ from version 4.7 onwards has it nevertheless, |