22 #ifndef _BLAZE_MATH_EXPRESSIONS_SMATTRANSEXPR_H_
23 #define _BLAZE_MATH_EXPRESSIONS_SMATTRANSEXPR_H_
31 #include <boost/type_traits/remove_reference.hpp>
72 class SMatTransExpr :
public SparseMatrix< SMatTransExpr<MT,SO>, SO >
74 ,
private SelectType< IsComputation<MT>::value, Computation, EmptyType >::Type
78 typedef typename MT::ResultType
RT;
79 typedef typename MT::CompositeType
CT;
96 template<
typename MT2 >
98 enum { value = useAssign };
127 typedef typename boost::remove_reference<Operand>::type::ConstIterator
IteratorType;
130 typedef typename std::iterator_traits<IteratorType>::value_type
ValueType;
131 typedef typename std::iterator_traits<IteratorType>::pointer
PointerType;
132 typedef typename std::iterator_traits<IteratorType>::reference
ReferenceType;
133 typedef typename std::iterator_traits<IteratorType>::difference_type
DifferenceType;
294 return sm_.columns();
314 return sm_.nonZeros();
334 template<
typename T >
336 return sm_.canAlias( alias );
346 template<
typename T >
348 return sm_.isAliased( alias );
371 template<
typename MT2
401 template<
typename MT2
431 template<
typename MT2
433 friend inline typename EnableIf< UseAssign<MT2> >::Type
441 DMatTransposer<MT2,!SO2> tmp( ~lhs );
465 template<
typename MT2
467 friend inline typename EnableIf< UseAssign<MT2> >::Type
475 DMatTransposer<MT2,!SO2> tmp( ~lhs );
509 template<
typename MT2
511 friend inline Operand trans(
const SMatTransExpr<MT2,SO2>& sm )
553 template<
typename MT
576 template<
typename MT
578 inline typename RowExprTrait< SMatTransExpr<MT,SO> >::Type
579 row(
const SMatTransExpr<MT,SO>& sm,
size_t index )
601 template<
typename MT
603 inline typename ColumnExprTrait< SMatTransExpr<MT,SO> >::Type
604 column(
const SMatTransExpr<MT,SO>& sm,
size_t index )
608 return trans(
row( sm.operand(), index ) );
624 template<
typename MT,
bool SO >
625 struct RowExprTrait< SMatTransExpr<MT,SO> >
629 typedef typename TransExprTrait< typename ColumnExprTrait<const MT>::Type >::Type Type;
638 template<
typename MT,
bool SO >
639 struct ColumnExprTrait< SMatTransExpr<MT,SO> >
643 typedef typename TransExprTrait< typename RowExprTrait<const MT>::Type >::Type Type;