aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2013-11-07 09:01:26 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2013-11-07 09:01:26 +0100
commit8fe609311d696189d443f42877a09fdf931220b4 (patch)
treed029832a315970f60a0249614032cc6ff2064c53 /Eigen
parent8edc9647345445c2b3e8b9ff1c70c625f43755c6 (diff)
Move internal::swap to numext to fix ambiguous call with std::swap
Diffstat (limited to 'Eigen')
-rw-r--r--Eigen/src/Core/util/Meta.h14
-rw-r--r--Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h6
2 files changed, 14 insertions, 6 deletions
diff --git a/Eigen/src/Core/util/Meta.h b/Eigen/src/Core/util/Meta.h
index aea168b46..e4e4d4a87 100644
--- a/Eigen/src/Core/util/Meta.h
+++ b/Eigen/src/Core/util/Meta.h
@@ -89,9 +89,9 @@ template<typename T> struct enable_if<true,T>
{ typedef T type; };
#if defined(__CUDA_ARCH__)
-template<typename T> EIGEN_DEVICE_FUNC void swap(T &a, T &b) { T tmp = b; b = a; a = tmp; }
namespace device {
+
template<typename T> struct numeric_limits
{
EIGEN_DEVICE_FUNC
@@ -110,8 +110,6 @@ template<> struct numeric_limits<double>
}
-#else
-template<typename T> EIGEN_STRONG_INLINE void swap(T &a, T &b) { std::swap(a,b); }
#endif
/** \internal
@@ -262,6 +260,16 @@ template<typename T, int S> struct is_diagonal<DiagonalMatrix<T,S> >
} // end namespace internal
+namespace numext {
+
+#if defined(__CUDA_ARCH__)
+template<typename T> EIGEN_DEVICE_FUNC void swap(T &a, T &b) { T tmp = b; b = a; a = tmp; }
+#else
+template<typename T> EIGEN_STRONG_INLINE void swap(T &a, T &b) { std::swap(a,b); }
+#endif
+
+} // end namespace numext
+
} // end namespace Eigen
#endif // EIGEN_META_H
diff --git a/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h b/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h
index be2f7b452..0c3425069 100644
--- a/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h
+++ b/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h
@@ -606,12 +606,12 @@ template<typename SolverType> struct direct_selfadjoint_eigenvalues<SolverType,3
// Sort in increasing order.
if (roots(0) >= roots(1))
- internal::swap(roots(0),roots(1));
+ numext::swap(roots(0),roots(1));
if (roots(1) >= roots(2))
{
- internal::swap(roots(1),roots(2));
+ numext::swap(roots(1),roots(2));
if (roots(0) >= roots(1))
- internal::swap(roots(0),roots(1));
+ numext::swap(roots(0),roots(1));
}
}