#36953: Basic serialization code throws exception (boost) --------------------------+-------------------------------- Reporter: dario.izzo@… | Owner: macports-tickets@… Type: defect | Status: new Priority: High | Milestone: Component: ports | Version: 2.1.2 Keywords: | Port: --------------------------+-------------------------------- Lets take the basic code below (taken from the basic tutorial from boost developers http://www.boost.org/doc/libs/1_52_0/libs/serialization/doc/tutorial.html) {{{ #include <fstream> // include headers that implement a archive in simple text format #include <boost/archive/text_oarchive.hpp> #include <boost/archive/text_iarchive.hpp> ///////////////////////////////////////////////////////////// // gps coordinate // // illustrates serialization for a simple type // class gps_position { private: friend class boost::serialization::access; // When the class Archive corresponds to an output archive, the // & operator is defined similar to <<. Likewise, when the class Archive // is a type of input archive the & operator is defined similar to >>. template<class Archive> void serialize(Archive & ar, const unsigned int version) { ar & degrees; ar & minutes; ar & seconds; } int degrees; int minutes; float seconds; public: gps_position(){}; gps_position(int d, int m, float s) : degrees(d), minutes(m), seconds(s) {} }; int main() { // create and open a character archive for output std::ofstream ofs("filename"); // create class instance const gps_position g(35, 59, 24.567f); // save data to archive { boost::archive::text_oarchive oa(ofs); // write class instance to archive oa << g; // archive and stream closed when destructors are called } // ... some time later restore the class instance to its orginal state gps_position newg; { // create and open an archive for input std::ifstream ifs("filename"); boost::archive::text_iarchive ia(ifs); // read class state from archive ia >> newg; // archive and stream closed when destructors are called } return 0; } }}} and compile it with {{{ g++ boost_archives.cpp -L/opt/local/lib/ -lboost_serialization-mt }}} where: {{{ g++ --version }}} returns: {{{ g++ (MacPorts gcc47 4.7.2_2) 4.7.2 }}} the following exception is caught!! {{{ (libc++abi.dylib: terminate called throwing an exception) }}} I also tried gcc 4.5 and boost 1.49, 1.50, 1.51 -> no difference. Conclusion: The mac port boost serialization library seems to not work on osx 10.8.2!!! -- Ticket URL: <https://trac.macports.org/ticket/36953> MacPorts <http://www.macports.org/> Ports system for Mac OS