
Luca Cappa wrote:
2) Since I do not like to serialize the base object, I do not want to call boost::serialization::base_object in the derived serializing method, but instead I wish to just explicitly register base/derived relationship with:
boost::serialization::void_cast_register
();
as the section Runtime Casting tells the reader. But it does not work (compilation fails), I still need to add two NULLs parameters to that function, such as:
This would news to me. As far as I know it works. Send an example. For a working example see boost\serialization\shared_ptr_132.hpp and test_void_castcpp
boost::serialization::void_cast_register
(NULL, NULL); so the code of derived::base::serialize method of the example should be corrected. By the way in file void_cast_fwd.hpp for the method void_caster::void_cast_register the default arguments to NULL appear to be commented out, I wonder why.
Hmmm - I'm not seeing this.
3) What is preferred statement between
oa.register_type (static_cast
(NULL)); and
oa.register_type<Serializable> (); // I don't think this is legal
Some older compilers only work with the former. Modern compilers can use ar.template register_type<T>(); (note the missing _!!!)
? I tested that either works fine with VC8, and I guess they work fine with gcc4 too, but i wonder why I see in the examples of Boost the former used in place of the latter form which is commented out.
Best regards, Luca Cappa