Eigen::NoAlias< ExpressionType, StorageBase > Class Template Reference

Pseudo expression providing an operator = assuming no aliasing. More...

Public Types

typedef ExpressionType::Scalar Scalar
 

Public Member Functions

ExpressionType & expression () const
 
 NoAlias (ExpressionType &expression)
 
template<typename OtherDerived >
ExpressionType & operator+= (const StorageBase< OtherDerived > &other)
 
template<typename OtherDerived >
ExpressionType & operator-= (const StorageBase< OtherDerived > &other)
 
template<typename OtherDerived >
ExpressionType & operator= (const StorageBase< OtherDerived > &other)
 

Protected Attributes

ExpressionType & m_expression
 

Detailed Description

template<typename ExpressionType, template< typename > class StorageBase>
class Eigen::NoAlias< ExpressionType, StorageBase >

Pseudo expression providing an operator = assuming no aliasing.

Template Parameters
ExpressionTypethe type of the object on which to do the lazy assignment

This class represents an expression with special assignment operators assuming no aliasing between the target expression and the source expression. More precisely it alloas to bypass the EvalBeforeAssignBit flag of the source expression. It is the return type of MatrixBase::noalias() and most of the time this is the only way it is used.

See also
MatrixBase::noalias()

Definition at line 33 of file NoAlias.h.

Member Typedef Documentation

◆ Scalar

template<typename ExpressionType , template< typename > class StorageBase>
typedef ExpressionType::Scalar Eigen::NoAlias< ExpressionType, StorageBase >::Scalar

Definition at line 36 of file NoAlias.h.

Constructor & Destructor Documentation

◆ NoAlias()

template<typename ExpressionType , template< typename > class StorageBase>
Eigen::NoAlias< ExpressionType, StorageBase >::NoAlias ( ExpressionType &  expression)
inlineexplicit

Definition at line 39 of file NoAlias.h.

ExpressionType & m_expression
Definition: NoAlias.h:72
ExpressionType & expression() const
Definition: NoAlias.h:66

Member Function Documentation

◆ expression()

template<typename ExpressionType , template< typename > class StorageBase>
ExpressionType& Eigen::NoAlias< ExpressionType, StorageBase >::expression ( ) const
inline

Definition at line 66 of file NoAlias.h.

67  {
68  return m_expression;
69  }

◆ operator+=()

template<typename ExpressionType , template< typename > class StorageBase>
template<typename OtherDerived >
ExpressionType& Eigen::NoAlias< ExpressionType, StorageBase >::operator+= ( const StorageBase< OtherDerived > &  other)
inline

Definition at line 51 of file NoAlias.h.

52  {
53  call_assignment_no_alias(m_expression, other.derived(), internal::add_assign_op<Scalar,typename OtherDerived::Scalar>());
54  return m_expression;
55  }
EIGEN_CONSTEXPR void call_assignment_no_alias(Dst &dst, const Src &src, const Func &func)

◆ operator-=()

template<typename ExpressionType , template< typename > class StorageBase>
template<typename OtherDerived >
ExpressionType& Eigen::NoAlias< ExpressionType, StorageBase >::operator-= ( const StorageBase< OtherDerived > &  other)
inline

Definition at line 59 of file NoAlias.h.

60  {
61  call_assignment_no_alias(m_expression, other.derived(), internal::sub_assign_op<Scalar,typename OtherDerived::Scalar>());
62  return m_expression;
63  }

◆ operator=()

template<typename ExpressionType , template< typename > class StorageBase>
template<typename OtherDerived >
ExpressionType& Eigen::NoAlias< ExpressionType, StorageBase >::operator= ( const StorageBase< OtherDerived > &  other)
inline

Definition at line 43 of file NoAlias.h.

44  {
45  call_assignment_no_alias(m_expression, other.derived(), internal::assign_op<Scalar,typename OtherDerived::Scalar>());
46  return m_expression;
47  }

Member Data Documentation

◆ m_expression

template<typename ExpressionType , template< typename > class StorageBase>
ExpressionType& Eigen::NoAlias< ExpressionType, StorageBase >::m_expression
protected

Definition at line 72 of file NoAlias.h.


The documentation for this class was generated from the following file: