[eigen] OuterstrideMatch in src/Core/Ref.h

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]

Hi folks,
  We use Eigen at work and are trying to integrate the recent v3.3.9
release. Everything in our codebase builds and passes tests with the
exception of one set of numerical tests which only pass if we apply
the attached patch. This patch effectively ignores
PlainObjectBase::IsVectorAtCompileTime for the purposes of
OuterStrideMatch. I don't fully understand this part of Eigen nor the
failing code internally at my company. However, with this patch
applied, the check target behaves identically to without having it
applied so I am at a bit of a loss as to whether it is really safe for
us to apply.

Are there any eigen devs out there who can speak to this part of Eigen
and give any feedback on whether this patch would be reasonable or

diff --git a/Eigen/src/Core/Ref.h b/Eigen/src/Core/Ref.h
index 17a1496b8..d063d5eec 100644
--- a/Eigen/src/Core/Ref.h
+++ b/Eigen/src/Core/Ref.h
@@ -34,7 +34,7 @@ struct traits<Ref<_PlainObjectType, _Options, _StrideType> >
       InnerStrideMatch = int(StrideType::InnerStrideAtCompileTime)==int(Dynamic)
                       || int(StrideType::InnerStrideAtCompileTime)==int(Derived::InnerStrideAtCompileTime)
                       || (int(StrideType::InnerStrideAtCompileTime)==0 && int(Derived::InnerStrideAtCompileTime)==1),
-      OuterStrideMatch = IsVectorAtCompileTime
+      OuterStrideMatch = Derived::IsVectorAtCompileTime
                       || int(StrideType::OuterStrideAtCompileTime)==int(Dynamic) || int(StrideType::OuterStrideAtCompileTime)==int(Derived::OuterStrideAtCompileTime),
       // NOTE, this indirection of evaluator<Derived>::Alignment is needed
       // to workaround a very strange bug in MSVC related to the instantiation

Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/