From c15c65990fc322891b10a6a20db9bc6c127fae26 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Fri, 29 Nov 2013 17:50:59 +0100 Subject: First step toward the generalization of evaluators to triangular, sparse and other fancyness. Remove product_tag template parameter to Product. --- Eigen/src/Core/Product.h | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'Eigen/src/Core/Product.h') diff --git a/Eigen/src/Core/Product.h b/Eigen/src/Core/Product.h index 52586e5c0..970d257a5 100644 --- a/Eigen/src/Core/Product.h +++ b/Eigen/src/Core/Product.h @@ -12,7 +12,7 @@ namespace Eigen { -template class ProductImpl; +template class ProductImpl; /** \class Product * \ingroup Core_Module @@ -26,14 +26,13 @@ template -struct traits > +template +struct traits > : traits::Type> { // We want A+B*C to be of type Product and not Product @@ -45,18 +44,23 @@ struct traits > } // end namespace internal -template -class Product : public ProductImpl::StorageKind, - typename internal::traits::StorageKind>::ret> +template +class Product : public ProductImpl<_Lhs,_Rhs,Option, + typename internal::promote_storage_type::StorageKind, + typename internal::traits<_Rhs>::StorageKind>::ret> { public: + typedef _Lhs Lhs; + typedef _Rhs Rhs; + typedef typename ProductImpl< - Lhs, Rhs, Option, ProductTag, + Lhs, Rhs, Option, typename internal::promote_storage_type::ret>::Base Base; EIGEN_GENERIC_PUBLIC_INTERFACE(Product) + + typedef typename Lhs::Nested LhsNested; typedef typename Rhs::Nested RhsNested; @@ -82,13 +86,13 @@ class Product : public ProductImpl -class ProductImpl : public internal::dense_xpr_base >::type +template +class ProductImpl : public internal::dense_xpr_base >::type { typedef Product Derived; public: - typedef typename internal::dense_xpr_base >::type Base; + typedef typename internal::dense_xpr_base >::type Base; EIGEN_DENSE_PUBLIC_INTERFACE(Derived) }; -- cgit v1.2.3