diff --git a/doc/special.html b/doc/special.html index a3144df41..b9b854ee6 100644 --- a/doc/special.html +++ b/doc/special.html @@ -444,6 +444,17 @@

Exporting Class Serialization

BOOST_CLASS_EXPORT_IMPLEMENT in the class definition file. +

+This makes the rule easy to follow but does not remove it. The definition +file has to include the archive class headers itself, before +BOOST_CLASS_EXPORT_IMPLEMENT +is invoked, just as it would for +BOOST_CLASS_EXPORT. +A definition file which includes none of them instantiates no serialization +code at all, and serializing a pointer to such a class then throws +unregistered_class +when the program is run. +

This system has certain implications for placing code in static or shared libraries. Placing BOOST_CLASS_EXPORT diff --git a/doc/traits.html b/doc/traits.html index 7f4e65f9a..cad624d45 100644 --- a/doc/traits.html +++ b/doc/traits.html @@ -247,8 +247,11 @@

Export Key

This is addressed by invoking BOOST_CLASS_EXPORT_IMPLEMENT(T) in the file which defines (implements) the class T. -This ensures that code for the derived class T will -be explicitly instantiated. +That instantiates the code for the archive classes whose headers the file +includes, so the file has to include them before the macro is invoked. +See +Exporting Class Serialization +for the details, and for what happens when it includes none of them.
  • There needs to be some sort of identifier which can be used to select the code to be invoked when the object is loaded.