diff options
Diffstat (limited to 'Eigen/src/Core/Swap.h')
-rw-r--r-- | Eigen/src/Core/Swap.h | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/Eigen/src/Core/Swap.h b/Eigen/src/Core/Swap.h index a7cf219f7..60b6fffc9 100644 --- a/Eigen/src/Core/Swap.h +++ b/Eigen/src/Core/Swap.h @@ -32,25 +32,15 @@ * \brief Internal helper class for swapping two expressions */ template<typename ExpressionType> -struct ei_traits<SwapWrapper<ExpressionType> > -{ - typedef typename ExpressionType::Scalar Scalar; - enum { - RowsAtCompileTime = ExpressionType::RowsAtCompileTime, - ColsAtCompileTime = ExpressionType::ColsAtCompileTime, - MaxRowsAtCompileTime = ExpressionType::MaxRowsAtCompileTime, - MaxColsAtCompileTime = ExpressionType::MaxColsAtCompileTime, - Flags = ExpressionType::Flags, - CoeffReadCost = ExpressionType::CoeffReadCost - }; -}; +struct ei_traits<SwapWrapper<ExpressionType> > : ei_traits<ExpressionType> {}; template<typename ExpressionType> class SwapWrapper - : public MatrixBase<SwapWrapper<ExpressionType> > + : public ExpressionType::template MakeBase<SwapWrapper<ExpressionType> >::Type { public: - EIGEN_GENERIC_PUBLIC_INTERFACE(SwapWrapper) + typedef typename ExpressionType::template MakeBase<SwapWrapper<ExpressionType> >::Type Base; + _EIGEN_DENSE_PUBLIC_INTERFACE(SwapWrapper) typedef typename ei_packet_traits<Scalar>::type Packet; inline SwapWrapper(ExpressionType& xpr) : m_expression(xpr) {} @@ -128,7 +118,7 @@ template<typename ExpressionType> class SwapWrapper */ template<typename Derived> template<typename OtherDerived> -void MatrixBase<Derived>::swap(MatrixBase<OtherDerived> EIGEN_REF_TO_TEMPORARY other) +void DenseBase<Derived>::swap(DenseBase<OtherDerived> EIGEN_REF_TO_TEMPORARY other) { (SwapWrapper<Derived>(derived())).lazyAssign(other); } |