
I'm attempting to apply the boost::serialization library to my application. Because it is fairly large, I've choosing to implement the serialize methods as non-templates. Such a tactic is used in some of the examples, for instance demo_polymorphic_A.hpp. This means that I don't include any boost.serialization or boost.archive headers in my definition files. A forward reference to the specific archive object is made instead. I've run into trouble with an object wrapped in a shared_pointer. To solve this, I've attempted to defined the BOOST_SHARED_POINTER_EXPORT() macro in this object's definition file. This necessitates including boost/serialization/shared_ptr.hpp. The problem is no matter what position I place this include file in this *.h file, I get the following error. boost/serialization/shared_ptr.hpp:26:2: #error "include <boost/serialization/shared_ptr> first This is a self reference, what is it trying to say? In other words, what do I have to include before boost/serialization/shared_ptr.hpp to make it happy?