$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
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