<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><DIV>Hi,</DIV>
<DIV>&nbsp;&nbsp; I have a query regarding macro BOOST_CLASS_VERSION().<BR>&nbsp;&nbsp; I am running following code :</DIV>
<DIV>&nbsp;&nbsp;&nbsp; class testRep<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; friend std::ostream &amp; operator&lt;&lt;(std::ostream &amp;os, const testRep &amp;tr);<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public :<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; template&lt;class Archive&gt; void serialize(Archive &amp;ar, const unsigned int version)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(version &gt;= 2)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ar &amp; BOOST_SERIALIZATION_NVP(Site);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private :<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string Site;<BR>&nbsp;&nbsp;&nbsp; };<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; BOOST_CLASS_VERSION(testRep, 2)<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; std::ostream &amp; operator&lt;&lt;(std::ostream &amp;os, const testRep &amp;tr)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return os &lt;&lt; '\n' &lt;&lt; tr.Site &lt;&lt; endl;<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; void read_file (testRep &amp;s, const char * filename)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::ifstream ifs(filename);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; assert (ifs.good());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boost::archive::xml_iarchive ia(ifs);</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ia &gt;&gt; BOOST_SERIALIZATION_NVP(s);<BR>&nbsp;&nbsp;&nbsp; }</DIV>
<DIV>&nbsp;&nbsp;&nbsp; int main (void)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testRep tr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; read_file (tr, "Test.xml");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; tr &lt;&lt; endl;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<BR>&nbsp;&nbsp;&nbsp; }</DIV>
<DIV>&nbsp;&nbsp; This code runs fine.<BR>&nbsp;&nbsp; But, if I remove the statement :<BR>&nbsp;&nbsp; BOOST_CLASS_VERSION(testRep, 2)<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp; then I get following error :<BR>&nbsp;&nbsp; terminate called after throwing an instance of 'boost::archive::archive_exception'<BR>&nbsp;&nbsp;&nbsp;&nbsp; what():&nbsp; class version<BR>&nbsp;&nbsp; Aborted (core dumped)<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp; So, want to ask if it is mandatory to declare a macro BOOST_CLASS_VERSION()? and if not then how do I prevent this runtime error from happening?</DIV>
<DIV>&nbsp;</DIV>
<DIV>Regards,<BR>Girish</DIV></td></tr></table><br>