我正在实施一个新的boost :: archive,并且我需要对集合进行特殊处理。 因此,我为 boost :: serialization :: stl :: save_collection 和 boost :: serialization :: load / save_map_collection 创建了模板专业化,所有实现都是内联的
使用msvc14,一切正常。
使用gcc49,它始终是 boost :: serialization :: stl :: save_collection 的原始boost实现。
boost :: serialization :: load / save_map_collection 可以在gcc49上正常工作,并且使用了我的专业化技术。
这是我的声明:
# pragma once
#include <boost/config.hpp>
#include <boost/serialization/nvp.hpp>
#include <boost/serialization/serialization.hpp>
#include <boost/serialization/version.hpp>
#include <boost/serialization/collection_size_type.hpp>
#include <boost/serialization/item_version_type.hpp>
namespace boost{
namespace serialization {
namespace stl {
//////////////////////////////////////////////////////////////////////
// implementation of serialization for STL containers
//
template</*class Archive,*/ class Container>
inline void save_collection(
::boost::archive::my_oarchive & ar,
const Container &s,
collection_size_type count)
{
.....
}
template</*class Archive,*/ class Container>
inline void save_collection(::boost::archive::my_oarchive & ar, const Container &s)
{
// record number of elements
collection_size_type count(s.size());
save_collection(ar, s, count);
}
} // namespace stl
} // namespace serialization
} // namespace boost
我已经按照包含顺序进行操作,并删除了#pragma一次,但仍然没有成功!
有什么想法吗?