Boost logo

Boost Users :

Subject: [Boost-users] Change from binary_oarchive to text_oarchive gives 'sizeof' compilation errors
From: James Vanns (james.vanns_at_[hidden])
Date: 2008-09-25 05:12:50


Hi, in trying to debug a problem we are experiencing here with binary archives I tried switching to text archives to see if we get the same behaviour. However, now I can't even compile my code! A straight swap for binary_oarchive to text_oarchive gives me these errors:

error: invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE<false>’

The arrangement of my header files is like so:

// base_msg.h
#include <boost/archive/tmpdir.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>

using boost::archive::text_oarchive;
using boost::archive::text_iarchive;

class Base
{
   private:
      text_oarchive out;
      text_iarchive in;
};

template<class T> class MsgSerializer : public T, public Base
{
...
};

// msg.h
#include "base_msg.h"

// Boost containers, algorithms etc.
#include <boost/serialization/map.hpp>
#include <boost/serialization/string.hpp>
#include <boost/serialization/vector.hpp>
#include <boost/serialization/base_object.hpp>
#include <boost/serialization/split_member.hpp>

struct MyMsg_
{
   template<class Archive>
   void
   serialize(Archive &p_archiver, const unsigned int /* version */)
   {
   }
};

typedef MsgSerializer<MyMsg_> MyMsg;

etc.

I have literally just changed binary_ for text_ and it now spits out said error whenever it encounters MyMsg_. This used to compile fine. Even if I re-arrange the headers I still get the same error? What must I change to get text_archives to compile!?

I've also tried adding access.hpp (which I didn't have to do before) and serialization.hpp all to no avail.

Regards,

Jim

-- 
James Vanns
Systems Programmer
Framestore CFC Ltd.

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net