For a short while now I've been using boost serialization.
It works perfectly... except... it keeps coming up one massive warning (that takes up ~100 lines). (see below)
Whenever I get annoyed, I try to experiment and then search for answers online, but no luck.
I'm probably using the library incorrectly somewhere.
So I made a small program that generates the problem.
Any advice on what I could be doing wrong would be appreciated.
I use vc++ 2008 btw.
Thanks.
Code:
--------------------------------------------
/* demonstration of problem.
The program asks the user for a number, and then saves this
number to a file. When the user returns, the number is remembered.
*/
#include <iostream>
#include <fstream>
#include
#include
#include
// save and load methods
void save (const char * fname);
bool load (const char * fname); // returns if successful
// I know this is way too simple to put in a class, but bare with me
class Game
{
public:
Game () { number = 0; }
void getNumberFromUser () { std::cin >> number; }
int getNumber () { return number; }
private:
int number;
friend class boost::serialization::access;
template<class Archive> void serialize(Archive & ar, const unsigned int version)
{
ar & number;
}
};
typedef boost::shared_ptr< Game > Game_ptr;
Game_ptr game;
// entry
int main ()
{
game = Game_ptr( new Game );
// welcome
std::cout << "Hello\n";
// if file exists, recall the number
if (load ("save.txt")) std::cout << "You're number is " << game->getNumber() << ".\n";
// ask user for number
std::cout << "Enter a number: \n";
game->getNumberFromUser ();
// memorise number
save ("save.txt");
// exit
return 0;
}
void save (const char * fname)
{
std::ofstream ofs( fname );
boost::archive::text_oarchive oa( ofs );
// save
oa << game;
}
bool load (const char * fname)
{
std::ifstream ifs( fname );
if (!ifs) return false; // file doesn't already exist
boost::archive::text_iarchive ia( ifs );
// load
ia >> game; // <------ Removing this line makes the warning go away
return true;
}
Warning:
--------------------------------------------
1>main.cpp
1>d:\dev\boostpro\boost\boost_1_40\boost\serialization\extended_type_info_typeid.hpp(88) : warning C4099: 'boost::serialization::static_warning_impl<false>::STATIC_WARNING' : type name first seen using 'struct' now seen using 'class'
1> d:\dev\boostpro\boost\boost_1_40\boost\serialization\static_warning.hpp(115) : see declaration of 'boost::serialization::static_warning_impl<false>::STATIC_WARNING'
1> d:\dev\boostpro\boost\boost_1_40\boost\serialization\extended_type_info_typeid.hpp(85) : while compiling class template member function 'const boost::serialization::extended_type_info *boost::serialization::extended_type_info_typeid<T>::get_derived_extended_type_info(const T &) const'
1> with
1> [
1> T=Game
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\archive\shared_ptr_helper.hpp(105) : see reference to class template instantiation 'boost::serialization::extended_type_info_typeid<T>' being compiled
1> with
1> [
1> T=Game
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\serialization\shared_ptr.hpp(138) : see reference to function template instantiation 'void boost::archive::detail::shared_ptr_helper::reset<Game>(boost::shared_ptr<T> &,T *)' being compiled
1> with
1> [
1> T=Game
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\serialization\split_free.hpp(58) : see reference to function template instantiation 'void boost::serialization::load(Archive &,boost::shared_ptr<T> &,const unsigned int)' being compiled
1> with
1> [
1> Archive=boost::archive::text_iarchive,
1> T=Game
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\serialization\split_free.hpp(54) : while compiling class template member function 'void boost::serialization::free_loader::invoke(Archive &,T &,const unsigned int)'
1> with
1> [
1> Archive=boost::archive::text_iarchive,
1> T=boost::shared_ptr<Game>
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\serialization\split_free.hpp(74) : see reference to class template instantiation 'boost::serialization::free_loader' being compiled
1> with
1> [
1> Archive=boost::archive::text_iarchive,
1> T=boost::shared_ptr<Game>
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\serialization\shared_ptr.hpp(153) : see reference to function template instantiation 'void boost::serialization::split_free(Archive &,boost::shared_ptr<T> &,const unsigned int)' being compiled
1> with
1> [
1> Archive=boost::archive::text_iarchive,
1> T=Game
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\serialization\serialization.hpp(133) : see reference to function template instantiation 'void boost::serialization::serialize(Archive &,boost::shared_ptr<T> &,const unsigned int)' being compiled
1> with
1> [
1> Archive=boost::archive::text_iarchive,
1> T=Game
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\archive\detail\iserializer.hpp(174) : see reference to function template instantiation 'void boost::serialization::serialize_adl(Archive &,T &,const unsigned int)' being compiled
1> with
1> [
1> Archive=boost::archive::text_iarchive,
1> T=Game_ptr
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\archive\detail\iserializer.hpp(161) : while compiling class template member function 'void boost::archive::detail::iserializer::load_object_data(boost::archive::detail::basic_iarchive &,void *,const unsigned int) const'
1> with
1> [
1> Archive=boost::archive::text_iarchive,
1> T=Game_ptr
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\archive\detail\iserializer.hpp(362) : see reference to class template instantiation 'boost::archive::detail::iserializer' being compiled
1> with
1> [
1> Archive=boost::archive::text_iarchive,
1> T=Game_ptr
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\archive\detail\iserializer.hpp(351) : while compiling class template member function 'void boost::archive::detail::load_non_pointer_type::load_standard::invoke(Archive &,T &)'
1> with
1> [
1> Archive=boost::archive::text_iarchive,
1> T=Game_ptr
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\archive\detail\iserializer.hpp(417) : see reference to class template instantiation 'boost::archive::detail::load_non_pointer_type::load_standard' being compiled
1> with
1> [
1> Archive=boost::archive::text_iarchive,
1> T=Game_ptr
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\archive\detail\iserializer.hpp(405) : while compiling class template member function 'void boost::archive::detail::load_non_pointer_type::invoke(Archive &,T &)'
1> with
1> [
1> Archive=boost::archive::text_iarchive,
1> T=Game_ptr
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\archive\detail\iserializer.hpp(542) : see reference to class template instantiation 'boost::archive::detail::load_non_pointer_type' being compiled
1> with
1> [
1> Archive=boost::archive::text_iarchive,
1> T=Game_ptr
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\archive\detail\common_iarchive.hpp(61) : see reference to function template instantiation 'void boost::archive::load(Archive &,T &)' being compiled
1> with
1> [
1> Archive=boost::archive::text_iarchive,
1> T=Game_ptr
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\archive\basic_text_iarchive.hpp(62) : see reference to function template instantiation 'void boost::archive::detail::common_iarchive<Archive>::load_override<T>(T &,int)' being compiled
1> with
1> [
1> Archive=boost::archive::text_iarchive,
1> T=Game_ptr
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\archive\text_iarchive.hpp(66) : see reference to function template instantiation 'void boost::archive::basic_text_iarchive<Archive>::load_override<T>(T &,int)' being compiled
1> with
1> [
1> Archive=boost::archive::text_iarchive,
1> T=Game_ptr
1> ]
1> d:\dev\boostpro\boost\boost_1_40\boost\archive\detail\interface_iarchive.hpp(61) : see reference to function template instantiation 'void boost::archive::text_iarchive_impl<Archive>::load_override<T>(T &,int)' being compiled
1> with
1> [
1> Archive=boost::archive::text_iarchive,
1> T=Game_ptr
1> ]
1> d:\dev\visual studio 2008\projects\boostserialisation\boostserialisation\main.cpp(82) : see reference to function template instantiation 'Archive &boost::archive::detail::interface_iarchive<Archive>::operator >>(T &)' being compiled
1> with
1> [
1> Archive=boost::archive::text_iarchive,
1> T=Game_ptr
1> ]