#include <cassert>
#include <boost/array.hpp>
#include <boost/ref.hpp>
int main()
{
double d0, d1, d2, d3;
boost::array<boost::reference_wrapper<double>, 4> array =
{boost::ref(d0), boost::ref(d1), boost::ref(d2), boost::ref(d3)};
for(int i=0; i<4; i++)
{
array[i].get() = i;
}
assert(d2 == 2);
return 0;
}
Thank you Somerville for your solution. This is exactly what I need!
although this is a slightly unusual construct which might suffer nasty
aliasing issues, perhaps a few more details of your requirement might
clarify a better approach.
Please decorate on the 'nasty aliasing issues'. For more details of my
intention, please refer to my previous mail I just posted. I hope ther's
a even more elgent way to get rid of the issues you mentioned.
Given your requirement then this does seem a fairly good solution. I
was just pointing out that you will have to ensure that the lifetime of
the objects being bound to the reference wrappers are at least as long
as the reference wrappers themselves. This is no different than
references or pointers.