aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported
diff options
context:
space:
mode:
authorGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2015-11-11 15:38:30 -0800
committerGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2015-11-11 15:38:30 -0800
commit9fa10fe52d30525505ca97afd1fce7cda44d27e5 (patch)
treec609106d175cf0d31de0f795798d3931eb7513ee /unsupported
parentc587293e4821c61de45b6fee7ff5c3a4cbc33f1c (diff)
Don't use std::array when compiling with nvcc since nvidia doesn't support the use of STL containers on GPU.
Diffstat (limited to 'unsupported')
-rw-r--r--unsupported/Eigen/CXX11/Core2
-rw-r--r--unsupported/Eigen/CXX11/src/Core/util/EmulateCXX11Meta.h6
2 files changed, 5 insertions, 3 deletions
diff --git a/unsupported/Eigen/CXX11/Core b/unsupported/Eigen/CXX11/Core
index 292f09564..cadfaaff1 100644
--- a/unsupported/Eigen/CXX11/Core
+++ b/unsupported/Eigen/CXX11/Core
@@ -33,7 +33,7 @@
#include <vector>
// Emulate the cxx11 functionality that we need if the compiler doesn't support it.
-#if __cplusplus <= 199711L
+#if __cplusplus <= 199711L || defined(__CUDACC__)
#include "src/Core/util/EmulateCXX11Meta.h"
#else
#include <array>
diff --git a/unsupported/Eigen/CXX11/src/Core/util/EmulateCXX11Meta.h b/unsupported/Eigen/CXX11/src/Core/util/EmulateCXX11Meta.h
index ecd1bddf1..ce34a7f04 100644
--- a/unsupported/Eigen/CXX11/src/Core/util/EmulateCXX11Meta.h
+++ b/unsupported/Eigen/CXX11/src/Core/util/EmulateCXX11Meta.h
@@ -23,7 +23,8 @@ template <typename T, size_t n> class array {
EIGEN_DEVICE_FUNC
EIGEN_STRONG_INLINE const T& operator[] (size_t index) const { return values[index]; }
- static const std::size_t size() { return n; }
+ EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+ static std::size_t size() { return n; }
T values[n];
@@ -105,7 +106,8 @@ template <typename T, size_t n> class array {
}
#ifdef EIGEN_HAS_VARIADIC_TEMPLATES
- array(std::initializer_list<T> l) {
+ EIGEN_DEVICE_FUNC
+ EIGEN_STRONG_INLINE array(std::initializer_list<T> l) {
eigen_assert(l.size() == n);
internal::smart_copy(l.begin(), l.end(), values);
}