- introduce Part and Extract classes, splitting and extending the former

Triangular class
- full meta-unrolling in Part
- move inverseProduct() to MatrixBase
- compilation fix in ProductWIP: introduce a meta-selector to only do
  direct access on types that support it.
- phase out the old Product, remove the WIP_DIRTY stuff.
- misc renaming and fixes
This commit is contained in:
Benoit Jacob
2008-05-27 05:47:30 +00:00
parent 8f1fc80a77
commit 953efdbfe7
22 changed files with 530 additions and 434 deletions

View File

@@ -192,15 +192,11 @@ template<typename T> struct ei_unref<T&> { typedef T type; };
template<typename T> struct ei_unconst { typedef T type; };
template<typename T> struct ei_unconst<const T> { typedef T type; };
template<typename T> struct ei_is_temporary
{
enum { ret = int(ei_traits<T>::Flags) & TemporaryBit };
};
template<typename T, int n=1> struct ei_nested
{
typedef typename ei_meta_if<
ei_is_temporary<T>::ret,
ei_traits<T>::Flags & NestByValueBit,
T,
typename ei_meta_if<
int(ei_traits<T>::Flags) & EvalBeforeNestingBit