diff options
Diffstat (limited to 'Eigen/src/Core')
-rw-r--r-- | Eigen/src/Core/ProductEvaluators.h | 4 | ||||
-rw-r--r-- | Eigen/src/Core/util/ForwardDeclarations.h | 6 |
2 files changed, 7 insertions, 3 deletions
diff --git a/Eigen/src/Core/ProductEvaluators.h b/Eigen/src/Core/ProductEvaluators.h index ee87da66d..2f199bc29 100644 --- a/Eigen/src/Core/ProductEvaluators.h +++ b/Eigen/src/Core/ProductEvaluators.h @@ -100,8 +100,8 @@ struct evaluator_traits<Product<Lhs, Rhs, AliasFreeProduct> > // This is the default evaluator implementation for products: // It creates a temporary and call generic_product_impl template<typename Lhs, typename Rhs, int Options, int ProductTag, typename LhsShape, typename RhsShape> -struct product_evaluator<Product<Lhs, Rhs, Options>, ProductTag, LhsShape, RhsShape, typename traits<Lhs>::Scalar, - typename enable_if<(Options==DefaultProduct || Options==AliasFreeProduct),typename traits<Rhs>::Scalar>::type> +struct product_evaluator<Product<Lhs, Rhs, Options>, ProductTag, LhsShape, RhsShape, typename traits<Lhs>::Scalar, typename traits<Rhs>::Scalar, + EnableIf<(Options==DefaultProduct || Options==AliasFreeProduct)> > : public evaluator<typename Product<Lhs, Rhs, Options>::PlainObject>::type { typedef Product<Lhs, Rhs, Options> XprType; diff --git a/Eigen/src/Core/util/ForwardDeclarations.h b/Eigen/src/Core/util/ForwardDeclarations.h index c287c1023..ba75d25af 100644 --- a/Eigen/src/Core/util/ForwardDeclarations.h +++ b/Eigen/src/Core/util/ForwardDeclarations.h @@ -147,6 +147,9 @@ template<typename _Scalar, int Rows=Dynamic, int Cols=Dynamic, int Supers=Dynami namespace internal { template<typename Lhs, typename Rhs> struct product_type; + +template<bool> struct EnableIf; + /** \internal * \class product_evaluator * Products need their own evaluator with more template arguments allowing for @@ -157,7 +160,8 @@ template< typename T, typename LhsShape = typename evaluator_traits<typename T::Lhs>::Shape, typename RhsShape = typename evaluator_traits<typename T::Rhs>::Shape, typename LhsScalar = typename traits<typename T::Lhs>::Scalar, - typename RhsScalar = typename traits<typename T::Rhs>::Scalar + typename RhsScalar = typename traits<typename T::Rhs>::Scalar, + typename = EnableIf<true> // extra template parameter for SFINAE-based specialization > struct product_evaluator; } |