aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2016-07-27 23:30:47 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2016-07-27 23:30:47 +0200
commitcc2f6d68b192bcce576ee8c0008c4c4b1f2f62ff (patch)
tree98495a4bdfc640a30b7f507442d9bb9a07421473
parent188590db8269e3fb422bca194ea1ec6c364d94c2 (diff)
bug #1264: fix compilation
-rwxr-xr-xunsupported/Eigen/src/AutoDiff/AutoDiffScalar.h9
-rw-r--r--unsupported/test/autodiff.cpp8
2 files changed, 13 insertions, 4 deletions
diff --git a/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h b/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h
index 2db4d8c3b..50fedf6ac 100755
--- a/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h
+++ b/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h
@@ -666,13 +666,14 @@ EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY(cosh,
#undef EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY
template<typename DerType> struct NumTraits<AutoDiffScalar<DerType> >
- : NumTraits< typename NumTraits<typename DerType::Scalar>::Real >
+ : NumTraits< typename NumTraits<typename internal::remove_all<DerType>::type::Scalar>::Real >
{
- typedef AutoDiffScalar<Matrix<typename NumTraits<typename DerType::Scalar>::Real,DerType::RowsAtCompileTime,DerType::ColsAtCompileTime,
- 0, DerType::MaxRowsAtCompileTime, DerType::MaxColsAtCompileTime> > Real;
+ typedef typename internal::remove_all<DerType>::type DerTypeCleaned;
+ typedef AutoDiffScalar<Matrix<typename NumTraits<typename DerTypeCleaned::Scalar>::Real,DerTypeCleaned::RowsAtCompileTime,DerTypeCleaned::ColsAtCompileTime,
+ 0, DerTypeCleaned::MaxRowsAtCompileTime, DerTypeCleaned::MaxColsAtCompileTime> > Real;
typedef AutoDiffScalar<DerType> NonInteger;
typedef AutoDiffScalar<DerType> Nested;
- typedef typename NumTraits<typename DerType::Scalar>::Literal Literal;
+ typedef typename NumTraits<typename DerTypeCleaned::Scalar>::Literal Literal;
enum{
RequireInitialization = 1
};
diff --git a/unsupported/test/autodiff.cpp b/unsupported/test/autodiff.cpp
index 118cf2ec7..2da6dd8f3 100644
--- a/unsupported/test/autodiff.cpp
+++ b/unsupported/test/autodiff.cpp
@@ -256,6 +256,14 @@ double bug_1261() {
return maxVal.value() + minVal.value();
}
+double bug_1264() {
+ typedef AutoDiffScalar<Vector2d> AD;
+ const AD s;
+ const Matrix<AD, 3, 1> v1;
+ const Matrix<AD, 3, 1> v2 = (s + 3.0) * v1;
+ return v2(0).value();
+}
+
void test_autodiff()
{
for(int i = 0; i < g_repeat; i++) {