テンプレート化されたコンテナ クラスで boost.serialization を使用したい:
// MyContainer.h
template<class T> struct MyContainer {
T t;
template<class Archive>
void serialize(Archive& archive, const unsigned version) {
archive & t;
}
};
STL コンテナーをテンプレート パラメーターとして使用する場合、たとえば
// Main.cpp
...
MyContainer<array<int,4>> mc;
std::ofstream ofs("foo.bar");
boost::archive::binary_oarchive oa(ofs);
oa << mc;
...
...Visual Studio 11 で次のエラー メッセージが表示されます。
'serialize' : is not a member of 'std::array<_Ty,_Size>'
両方のファイルに「boost/serialization/array.hpp」を含めようとしましたが、問題は解決しませんでした。その上、コンテナーは他の STL コンテナーも保持する可能性があるため、配列の特殊化を含めることは私が望んでいるものではありません。
これを行う正しい方法は何ですか?