|
Ublas : |
From: Michael Stevens (mail_at_[hidden])
Date: 2005-02-16 13:56:13
Hi Glen,
On Wednesday 16 February 2005 18:08, glen stark wrote:
> am I correct that the scalar_vector does not support the assignement
> operator for value types?
>
> in other words, it seems I can't do the following:
>
> scalar_vector<double> someScalarVector(3,2.0);
> someScalarVector = 3;
>
> Was this a design decision? May I ask the reasoning behind it?
> I would think the above usage would be quite useful.
I would be guessing but I would guess the design is trying to be consistent
and simple. It is consistent because zero_vector, identity_vector and
scalar_vector have common interface structure. It is simple in that it does
not overload additional operators for special purposes.
> Is there another method in mind for the above behavior?
> The only thing I can see from the
> documenation woudl be to create a temporary scalar_vector and assign
> this...
I think this is a good way to go. If you like the = syntax you can define
operator= (scalar_vector<double> v, double s)
{
v = scalar_vector<double> (v.size(), s);
}
A good compiler should turn this into efficient code.
Personally I would use a normal function, I had to look several times at you
code example before I could figure out what it was supposed to do!
> Is there a reason why the following addition would be a bad idea?
>
> BOOST_UBLAS_INLINE
> scalar_vector &assign_temporary (scalar_vector &v) {
> swap (v);
> return *this;
> }
I'm a bit confused here. This member function is already in scalar_vector, or
is it missing or non functional in some version of uBLAS?
Michael