Robert Ramey wrote:
The rub here is your requirement that it be exported through 
a base class pointer.

That's exactly right. The library stores user-defined types and returns them to user code, but doesn't know what those types are ahead of time, hence the need to serialize via base pointers. As it is, the BOOST_EXPORT_* macros require I know the types even before compile time (i.e. at the time of writing the library code)... I basically need a way of registering the type at a point between when I've written the code and when it is compiled (which I guess only comes up as an issue for those writing libraries).

That would be the way to do it. However, someone proposed a solution 
to this problem and uploaded it as a track item. I found it intriguing, 
But I decided not to implement it to keep the library from getting 
any more complicated than it already is. You might want to 
paste this proposed enhancement into your own code.

Do you have a ticket number or link for this?