id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 7047,Deriving custom archive classes from boost::archive::text_oarchive_impl and boost::archive::text_iarchive_impl,zachais.vawter@…,Robert Ramey,"From here[http://stackoverflow.com/questions/10691911/deriving-custom-archive-classes-from-boostarchivetext-oarchive-impl-and-boos] Summary: After changing the base classes of my custom archives from binary_?archive_impl to text_?archive_impl, my custom archive classes are no longer ""found"" when the compiler is instantiating the serialize(...) methods in my other classes. Background: My application was successfully reading and writing files to disk using subclasses of binary_?archive_impl (the documentation and/or code comments recommend this over deriving from binary_?archive). I needed to switch from a binary file format to a text format, so I switched the base classes of my custom archives to text_?archive_impl. That's when everything blew up. The problem: My custom archive classes add functionality, including some additional methods which do not exist in their Boost base classes; these methods are called in the serialize(...) methods in many of my classes, and they were working fine. After changing the base classes from binary_?archive_impl to text_?archive_impl, I received compilation errors all over the place complaining that my custom methods do not exist in text_?archive. Well, that's obvious (!!!), but they do exist in my custom archives, and they were working just fine when I was using Boost's binary base classes. What's the deal? What I found, and my temporary - but undesirable - solution: After tearing my hair out and going around in circles for about a day, this is what I found... 1) Some time ago (Boost 1.34 I believe), the files ""binary_?archive.hpp"" were split up into ""binary_?archive_impl.hpp"" and ""binary_?archive.hpp"" (the latter #include the former). This was not done to ""text_?archive.hpp"". (As a result, I changed my application's #include lines from ""binary_?archive_impl.hpp"" to simply ""text_?archive.hpp"".) 2) If I split up ""text_?archive.hpp"" into two parts and #include only the ""..._impl.hpp"" headers, everything works. (But I really don't want to modify my Boost installation!) 3) Looking more closely at these headers and fiddling around a bit, I found that if I use the original, unmodified headers and comment out the line BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::archive::text_oarchive) (and likewise for text_iarchive), then everything works fine again. (By the way I have similar lines in my own archive code to ""register"" my custom archives.)",Bugs,new,To Be Determined,serialization,Boost 1.48.0,Problem,,,aldo.d.longhi@…