mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-03-07 18:27:40 +08:00
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
This commit is contained in:
parent
8e4e29ae99
commit
6332aff0b2
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user