Evaluator: introduce the main Assignment class, add call_assignment to bypass NoAlias and AssumeAliasing, and some bits of cleaning

This commit is contained in:
Gael Guennebaud
2013-11-25 15:20:31 +01:00
parent c550a0e634
commit 230f5c3aa9
5 changed files with 226 additions and 179 deletions

View File

@@ -293,6 +293,15 @@ struct transfer_constness
>::type type;
};
#ifdef EIGEN_TEST_EVALUATORS
// When using evaluators, we never evaluate when assembling the expression!!
template<typename T, int n=1, typename PlainObject = typename eval<T>::type> struct nested
{
typedef typename ref_selector<T>::type type;
};
#else
/** \internal Determines how a given expression should be nested into another one.
* For example, when you do a * (b+c), Eigen will determine how the expression b+c should be
* nested into the bigger product expression. The choice is between nesting the expression b+c as-is, or
@@ -339,6 +348,7 @@ template<typename T, int n=1, typename PlainObject = typename eval<T>::type> str
typename ref_selector<T>::type
>::type type;
};
#endif // EIGEN_TEST_EVALUATORS
template<typename T>
EIGEN_DEVICE_FUNC