--- On Tue, 5/18/10, Robert Ramey
From: Robert Ramey
Subject: Re: [Boost-users] Serialization: C4308 warning with MSVC9 To: boost-users@lists.boost.org Date: Tuesday, May 18, 2010, 10:35 PM Political Confusion wrote: Political Confusion
writes: I'm using Boost 1.43 with MSVC9 SP1 and Windows
I've created a class like the "A Very Simple Case" example (i.e. added 'access' as friend and a templated serialize function). In serialize, I just archive 10 ints (signed and unsigned). It compiles fine, but when I add
SDK v7 on Windows 7. program code to save my class to
a text_oarchive, I get a warning:
c:\third-party\boost_1_43_0\boost\mpl\print.hpp(51) : warning C4308:
negative integral constant converted to unsigned type
Line 51 of print.hpp is: enum { n = sizeof(T) + -1 };
Calling sizeof() on my class gives a 44. I do not get any warning when I load my class with text_iarchive. And both save and load appear to work fine.
I had to add the following to make this warning go away:
BOOST_CLASS_TRACKING( my_class, boost::serialization::track_never )
This warning should precede a long call chain. If you go to the the call BEFORE this, you should find a comment which indicates why this warning is invoked.
Robert Ramey
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
Hello Robert, That's what I did. The lines above the warning (boost/archive/detail/check.hpp(98)): // saving an non-const object of a type not marked "track_never) // may be an indicator of an error usage of the // serialization library and should be double checked. // See documentation on object tracking. Also, see the // "rationale" section of the documenation // for motivation for this checking. BOOST_STATIC_WARNING(typex::value); So I added the BOOST_CLASS_TRACKING() line. I get the same warning if I modify save_schedule() in demo.cpp to instantiate a gps_position and save it to oa. gps_position was the example I used for my class. Thanks for the reply and thanks for your work.