我想将 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 容器。
这样做的正确方法是什么?