That would be very useful indeed and not hard to generalize.

I can see two approaches:
1. Exhaustive definition of functions with a varying number of arguments (like 16 (or more) implementations for vector and 16 for matrix), like the one you have in your implementation.
2. Variadic templates (that would be cool, but available only to c++0x compatible compilers) if somebody wants some hints let me know).

Do you thing this should have any features other than the ones you have in your example?

Best
Nasos




From: jesseperla@gmail.com
Date: Wed, 14 Jul 2010 10:52:36 -0400
To: ublas@lists.boost.org
Subject: [ublas] A ublas::tie to vector expressions?

The boost assignment is really nice, but what about the other direction (from vector to scalars)?  This comes up quite often.

ublas::vector<double> f()
{
ublas::vector<double> v(2);
v(0) = 1.1;
v(1) = 2.1;
return v;
}

double x;
double y;



ublas::vector<double> v(2);
v(0) = 1.1;
v(1) = 2.1;

ublas::tie(x, y) = v;
ublas::tie(x, y) = f(); //With function

ublas::matrix<double> mat(2,2); //....
ublas::tie(x, y) = row(mat, 0);

ublas::vector<int> v2(2);
v2(0) = 1;
v2(1) = 2;

        int z;
        ublas::tie(x, z); //With different types



For vector expressions, this seems to be easy enough to do.  See the attached basic implementation for 2 parameters.  With a little boost preprocessor, this could be fairly general.  What do people think?  Are there any boost PP who could generalize this?

-Jesse



Hotmail has tools for the New Busy. Search, chat and e-mail from your inbox. Learn more.