
Hello alltogether,
I've posted this already in Stackoverflow a week ago with no answer up to now,
so I thougth I try it here again.
I want to set a value in a fusion::vector at a specific location. This works
normaly very well with fusion::at_c(seq) = value, as at_c returns a reference
to the object at this position. However, this is not garanted, the
documentation only states about the return type: "In most cases, this is a
reference". I've encounterd a case where it is not a reference, when the
objects are of type boost::shared_ptr<anytype>. Therefore I cant set the
values as I'm only overriding a temporary. Minimal example:
struct Object1{};
struct Object2{};
typedef fusion::vector seq_type; seq_type seq;
boost::shared_ptr<Object1> value(new Object1());
fusion::at_c<0>(seq) = value;
assert(fusion::at_c<0>(seq) ); //assert will be executed because the default
constructed empty pointer was not overridden with a valid one
BOOST_MPL_ASSERT(( boost::is_reference< result_of::at_c