37 using Scalar =
typename ExpressionType::Scalar;
39 EIGEN_DEVICE_FUNC
constexpr explicit NoAlias(ExpressionType& expression) : m_expression(expression) {}
41 template <
typename OtherDerived>
42 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ExpressionType& operator=(
const StorageBase<OtherDerived>& other) {
43 call_assignment_no_alias(m_expression, other.derived(),
44 internal::assign_op<Scalar, typename OtherDerived::Scalar>());
48 template <
typename OtherDerived>
49 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ExpressionType& operator+=(
const StorageBase<OtherDerived>& other) {
50 call_assignment_no_alias(m_expression, other.derived(),
51 internal::add_assign_op<Scalar, typename OtherDerived::Scalar>());
55 template <
typename OtherDerived>
56 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ExpressionType& operator-=(
const StorageBase<OtherDerived>& other) {
57 call_assignment_no_alias(m_expression, other.derived(),
58 internal::sub_assign_op<Scalar, typename OtherDerived::Scalar>());
62 EIGEN_DEVICE_FUNC
constexpr ExpressionType& expression()
const {
return m_expression; }
65 ExpressionType& m_expression;