boost::serializationについて
次のコードがテンプレート辺りでコンパイルできません
#include <list>
#include <array>
#include <fstream>
#include <boost/serialization/serialization.hpp>
#include <boost/serialization/array.hpp>
#include <boost/serialization/list.hpp>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
std::list<std::array<bool, 3>> lab;
std::array<bool, 3> pusharray;
pusharray[0] = true;
pusharray[1] = false;
pusharray[2] = true;
lab.push_back(pusharray);
lab.push_back(pusharray);
std::ofstream ofs("test");
boost::archive::binary_oarchive boa(ofs);
boa << lab;
ofs.close();
std::ifstream ifs("test");
boost::archive::binary_iarchive bia(ifs);
bia >> lab;
ifs.close();
エラーメッセージ:
c:\program files\microsoft visual studio 10.0\vc\include\boost\archive\basic_binary_iprimitive.hpp(181): warning C4244: '引数' : 'std::streamsize' から 'size_t' への変換です。データが失われる可能性があります。
c:\program files\microsoft visual studio 10.0\vc\include\boost\archive\basic_binary_iprimitive.hpp(152): クラス テンプレート のメンバー関数 'void boost::archive::basic_binary_iprimitive<Archive,Elem,Tr>::load_binary(void *,size_t)' のコンパイル中
with
[
Archive=boost::archive::naked_binary_iarchive,
Elem=char,
Tr=std::char_traits<char>
]
c:\program files\microsoft visual studio 10.0\vc\include\boost\archive\detail\iserializer.hpp(362) : コンパイルされたクラスの テンプレート のインスタンス化 'void boost::archive::load_access::load_primitive<Archive,T>(Archive &,T &)' の参照を確認してください
with
[
Archive=boost::archive::naked_binary_iarchive,
T=boost::archive::object_id_type
]
(略)
そもそもSTLコンテナのネストはserializeできないのでしょうか
それともヘッダが足りないのでしょうか
お礼
ありがとうございます!お礼が遅れてしまってもうしわけありません。 g++ -I/usr/include/boost-1_33_1 test.cpp としたんですが、結果が変わらずです。 boost-1_33_1のフォルダの中にboostフォルダがあってそのなかにramdomがあるんですが、これで問題ないはずだと思うんですが…