This release aims to improve the consistence of the uBLAS source with the documented specification. An effort has been made to more fully define the uBLAS Concepts and to make the actual types Model the Concepts.
Many previously undocumented (and largely untested) functions have been removed to this purpose.
The uBLAS source now only aims to compile on modern and largely ISO standard C++ conformant compilers.
Proxy shortcuts are disables by default but can be reenabled by defining BOOST_UBLAS_ENABLE_PROXY_SHORTCUTS
Container and Expression Concepts have been differentiated. Check the concepts documentation for details. With this change it is now possible to determine if a uBLAS object is a Container or the more general Expression. Containers are derived from the bases vector_container and matrix_container.
#define BOOST_UBLAS_CHECK(expression, e) \ . if (! (expression) ); #define BOOST_UBLAS_CHECK_EX(expression, file, line, e) \ . if (! (expression) );
#define BOOST_UBLAS_CHECK(expression, e) #define BOOST_UBLAS_CHECK_EX(expression, file, line, e)
matrix = zero_matrix<double>(2, 2);with the error message
'size1' : is not a member of 'boost::numeric::ublas::matrix_container<C>'
The workaround is to use an explict noalias assignment with either
matrix.assign (zero_matrix<double>(2, 2));OR
noalias (matrix) = zero_matrix<double>(2, 2);
row (m, r)instead.
v.project (range (0,1)) m.project (range (0,1), range (0,1)) OR v (range (0,1)) m (range (0,1), range (0,1))
BOOST_UBLAS_ENABLE_PROXY_SHORTCUTS can be defined to enable all the proxy shortcut syntax shown above.
Alternatively use the more general (and generic) 'project' free functions or the new 'subrange' and 'subslice' functions.