[serialization] Please help me solve this compile error.
I am tearing my hair out over this, partly because I believe the code used
to compile. I just can't see what the problem is. I enclose all the
pertinent code as I cannot say which bits are irrelevant.
There are two classes:
ManagedArray which is an array of data without size or capacity data
(this is stored elsewhere).
PersistentManagedArray which I wrote to enable ManagedArrays to be
serialized.
The error message is produced in 'main':
error: no match for 'operator<<' in 'oa << PersistentManagedArray<int>((*
& size), (* & capacity), (* & ints))'
It seems to me that I have defined the necessary serialize member function
with the right signature. Commented out is code I
wrote some time ago which used separate load and save functions. This, I
believe, used to work.
#include <fstream>
#include
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.
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
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 http://lists.boost.org/mailman/listinfo.cgi/boost-users
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
int -- View this message in context: http://boost.2283326.n4.nabble.com/serialization-Please-help-me-solve-this-c... Sent from the Boost - Users mailing list archive at Nabble.com.
participants (4)
-
Bjorn Reese
-
Mark.Bartosik@thomsonreuters.com
-
Paul Blampspied
-
Robert Ramey