Boost logo

Boost Users :

Subject: Re: [Boost-users] [multiarray] problems passing views by reference
From: Rhys Ulerich (rhys.ulerich_at_[hidden])
Date: 2010-01-13 11:48:23


> The problem might be the body of fill_functor for the general case.  "*i"
> will produce a temporary (a subarray), which you are then trying to pass
> immediately by reference to the smaller fill_functor case.  C++ doesn't let
> you pass temporaries by reference, which is a real problem when you need
> proxy references like MultiArray does.  The solution should be as follows:
>
>        for (typename Array::iterator i = x.begin(); i != x.end(); ++i) {
>          typename Array::iterator::reference ri = *i;
>            f(ri,v);
>        }

Ron's suggestion did fix my problem. Thanks Ron.

Just in case anyone's ever searching for a general MultiArray fill
implementation, I've attached the now working code/test case.

This might not be a bad example to add to the MultiArray tutorial, both
because it touches on an easy mistake and because people ask about
fill with some frequency.

- Rhys




Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net