使用带有STL容器的boost.serialization作为模板参数

时间:2012-07-20 18:49:57

标签: c++ stl boost-serialization

我想将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容器。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

虽然serialiation/array.hpp serialize()的{​​{1}}超载,但boost::array没有{。}}。

您应该可以使用make_array()提供自己的std::array重载:

serialize()