Boost logo

Boost :

From: walter_at_[hidden]
Date: 2001-12-03 10:23:33


Hi all,
 
in the process of developing ublas we recently found two issues. The
resultion of these issues implicates the deprecation of certain parts
of the library.
 
We designed and implemented different projection classes for
expressions and containers. This isn't really neccessary. The
involved classes are
 
vector_range vs. vector_expression_range,
matrix_row vs. matrix_expression_row,
matrix_column vs. matrix_expression_column and
matrix_range vs. matrix_expression_range.
 
We were able to eliminate the need for projection classes of
expressions and would therefore like to deprecate the usage of
vector_expression_range, matrix_expression_row,
matrix_expression_column and matrix_expression_range.
 
Another somewhat related issue concerns the design of member
functions vs. free functions to construct projections. Historically
we supported member functions to construct projections of containers,
for example
 
matrix<double> m (2, 2);
matrix_range<matrix<double> > mr (m.project (range (0, 1), range (0,
1)));
 
and free functions to construct projections of expressions, for
example
 
matrix<double> m (2, 2);
matrix_range<matrix<double> > mr (project (trans (m), range (0, 1),
range (0, 1)));
 
We would prefer to only support free functions for the construction
of projections.
 
Pros:
- The interdependence of classes decreases.
- It's easier to extend the design with other proxies, for example
slices or diagonals.
- The library code gets smaller.
 
Cons:
- We'll lose certain (small) optimizations on compilers, which don't
support partial template specialization.
 
Any comments?
 
Regards
 
Joerg


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk