
Robert Ramey wrote:
There are a couple of places which might be good to look at here.
a) iserializer.hpp line # 190 b) iserializer.hpp line # 326
These two areas have borland specific code related to ensure that pointer de-serialization is instantiated. Perhaps borland has been improved so that it works more like other compilers in this regard. You might try tweaking these areas - using workaround borland version ... etc so that the more modern version uses the standard way. Let me know how this works.
Thanks for your suggestion, it did prove helpful! I enclose a couple of patches which cause some 30 tests to pass which previously failed. Let me know what you think and if you want me to apply them. Cheers, Nicola Musatti ******Index: basic_text_oprimitive.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/archive/basic_text_oprimitive.hpp,v retrieving revision 1.12 diff -d -u -r1.12 basic_text_oprimitive.hpp --- basic_text_oprimitive.hpp 4 Feb 2006 20:35:35 -0000 1.12 +++ basic_text_oprimitive.hpp 24 May 2006 20:53:36 -0000 @@ -58,6 +58,10 @@ class save_access; +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) && __BORLANDC__ >= 0x580 +class version_type; +#endif + ///////////////////////////////////////////////////////////////////////// // class basic_text_oprimitive - output of prmitives to stream template<class OStream> @@ -84,6 +88,14 @@ os << t; } + #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) && __BORLANDC__ >= 0x580 + void save(const version_type t){ + if(os.fail()) + boost::throw_exception(archive_exception(archive_exception::stream_error)); + os << t.t; + } + #endif + ///////////////////////////////////////////////////////// // fundamental types that need special treatment void save(const bool t){ ******Index: iserializer.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/archive/detail/iserializer.hpp,v retrieving revision 1.30 diff -d -u -r1.30 iserializer.hpp --- iserializer.hpp 12 Feb 2006 05:45:16 -0000 1.30 +++ iserializer.hpp 24 May 2006 21:42:57 -0000 @@ -187,7 +187,7 @@ public: // at least one compiler (CW) seems to require that serialize_adl // be explicitly instantiated. Still under investigation. - #if !defined(__BORLANDC__) + #if ! BOOST_WORKAROUND(__BORLANDC__, < 0x582) void (* const m)(Archive &, T &, const unsigned); boost::serialization::extended_type_info * (* e)(); #endif