
Visual C++ has a “Microsoft extension” that allows it to take a non-const reference to a temporary (and boost serialization uses non-const references whether you are serializing in or out). If you compile with Microsoft extensions enabled: /Ze the following code will compile. If you compile without Microsoft extensions enabled: /Za the following code will not compile. struct obj_t{}; void foo( obj_t & ); obj_t bar(); void main() { foo( bar() ); } From: Boost-users [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Paul Blampspied Sent: Saturday, August 02, 2014 4:13 PM To: boost-users Subject: Re: [Boost-users] [serialization] Please help me solve this compile error. Thanks very much. That is exactly what the problem was. It used to work at one time though. I think the C++ standard may have changed - or maybe it was in Visual C++ before I switched to a Linux environment. many thanks. On Wed, Jul 30, 2014 at 2:48 PM, Bjorn Reese <breese@mail1.stofanet.dk<mailto:breese@mail1.stofanet.dk>> wrote: On 07/30/2014 04:01 AM, Paul Blampspied wrote: boost::archive::binary_oarchive oa(file); oa << PersistentManagedArray<int>(size, capacity, ints); //This line does not compile ! The stream operator in Boost.Serialization does not take temporary objects, so create the PersistentManagedArray<T> object on a separate line, and then pass it to the stream. _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org<mailto:Boost-users@lists.boost.org> http://lists.boost.org/mailman/listinfo.cgi/boost-users