aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/CXX11
diff options
context:
space:
mode:
authorGravatar Mehdi Goli <mehdi.goli@codeplay.com>2019-10-23 15:56:56 +0100
committerGravatar Mehdi Goli <mehdi.goli@codeplay.com>2019-10-23 15:56:56 +0100
commit6332aff0b2487d8db31b9a79934b725415e1c488 (patch)
treeb5b75317fed83170deb5ebfddd955ffa9d119054 /unsupported/Eigen/CXX11
parent8e4e29ae99414a60bc6b01780ca88ee85c83ba76 (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.h23
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,