Boost logo

Boost Users :

From: Robert Ramey (ramey_at_[hidden])
Date: 2005-08-09 11:10:44


Richard Jennings wrote:
> I have found that the requirement that no serialization headers can be
> included before any archive headers means that you have to be careful
> which serialization headers you include in your class headers and
> indeed in what order you include them.

It is my intention that this issue be addressed with the simple rule:

"all headers from the serialization directory should follow and headers from
the archive directory"

I believe that this rule should be very easy to follow.

As a beneficial side-effect of flagging any usage of "archive" headers in
include modules for classes. This would accidently link a serialization
definition with implementation of a specific archive.

>
> In particular if you include serialization/nvp.hpp before
> serialization/vector.hpp and you use that class in another module that
> does not use archiving at all then that module will hit the error
> directive, example below.

This would surprise me. Your example looks good to me. So I built on my own
machine. Both main.cpp and B.cpp compiled without problems with VC 7.1 .
So we're out of sync somehow.

> A solution would seem to be that serialization/nvp.hpp should only be
> included in the module that includes archive headers.

This wouldn't work and shouldn't be necessary. Lets beat upon your example
some more until we get the same results.

> I guess what I would like is some guidance on using serialization as
> it's become a bit more tricky in my experience.

I would hope that its not too tricky. The system is designed to be as
tricky as necessary - but no trickier.

> At least you can't willy-nilly include serialization headers in any order
> in any headers
> and expect the application to compile.

True

>Perhaps it only worked by luck before!

LOL - well I do consider myself a lucky person !!! But

A very small observation on your code:

#include <vector> // note this is superflous - but harmless
#include <boost/serialization/vector.hpp> // as the above is included by
this module

Robert Ramey


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