aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Hauke Heibel <hauke.heibel@gmail.com>2013-08-02 22:40:36 +0200
committerGravatar Hauke Heibel <hauke.heibel@gmail.com>2013-08-02 22:40:36 +0200
commit8f4d93a4b7b15fdd240f4c3c283128cead6eae16 (patch)
treec49aa581f3fc6e693952b6a64291ad8a83a6466c
parent51b361b3bb40d547ecf39e4c2e90a806c56c9751 (diff)
Fix compilation.
The Matrix is required to be mutable but it also needs to be a reference and temporaries do not bind to non-const references - thus we need a hack and cast away the constness.
-rw-r--r--unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h1
-rw-r--r--unsupported/test/matrix_power.cpp12
2 files changed, 10 insertions, 3 deletions
diff --git a/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h b/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h
index f619d8ae5..a35c11be5 100644
--- a/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h
+++ b/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h
@@ -426,7 +426,6 @@ struct matrix_function_compute<MatrixType, 1>
static void run(const MatrixType& A, AtomicType& atomic, ResultType &result)
{
typedef internal::traits<MatrixType> Traits;
- typedef typename MatrixType::Scalar Scalar;
typedef typename MatrixType::Index Index;
// compute Schur decomposition of A
diff --git a/unsupported/test/matrix_power.cpp b/unsupported/test/matrix_power.cpp
index 58644f84b..baf183d12 100644
--- a/unsupported/test/matrix_power.cpp
+++ b/unsupported/test/matrix_power.cpp
@@ -97,8 +97,12 @@ void testGeneral(const MatrixType& m, double tol)
}
template<typename MatrixType>
-void testSingular(const MatrixType& m, double tol)
+void testSingular(const MatrixType& m_const, double tol)
{
+ // we need to pass by reference in order to prevent errors with
+ // MSVC for aligned data types ...
+ MatrixType& m = const_cast<MatrixType&>(m_const);
+
const int IsComplex = NumTraits<typename internal::traits<MatrixType>::Scalar>::IsComplex;
typedef typename internal::conditional<IsComplex, TriangularView<MatrixType,Upper>, const MatrixType&>::type TriangularType;
typename internal::conditional< IsComplex, ComplexSchur<MatrixType>, RealSchur<MatrixType> >::type schur;
@@ -126,8 +130,12 @@ void testSingular(const MatrixType& m, double tol)
}
template<typename MatrixType>
-void testLogThenExp(const MatrixType& m, double tol)
+void testLogThenExp(const MatrixType& m_const, double tol)
{
+ // we need to pass by reference in order to prevent errors with
+ // MSVC for aligned data types ...
+ MatrixType& m = const_cast<MatrixType&>(m_const);
+
typedef typename MatrixType::Scalar Scalar;
Scalar x;