C++ gcc4.9没有使用msvc140调用正确的模板函数专用化—它工作正常

C++ gcc4.9没有使用msvc140调用正确的模板函数专用化—它工作正常,c++,boost,C++,Boost,我正在实现一个新的boost::archive,我需要对集合进行特殊处理。 因此,我为boost::serialization::stl::save_collection和boost::serialization::load/save_map_collection创建了模板专门化,所有实现都是内联的 使用msvc14,一切正常 对于gcc49,它始终是调用的boost::serialization::stl::save_collection的原始boost实现 boost::serializat

我正在实现一个新的boost::archive,我需要对集合进行特殊处理。 因此,我为boost::serialization::stl::save_collectionboost::serialization::load/save_map_collection创建了模板专门化,所有实现都是内联的

使用msvc14,一切正常

对于gcc49,它始终是调用的boost::serialization::stl::save_collection的原始boost实现

boost::serialization::load/save_map_集合与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一次
#包括
#包括
#包括
#包括
#包括
#包括
名称空间提升{
命名空间序列化{
名称空间stl{
//////////////////////////////////////////////////////////////////////
//STL容器序列化的实现
//
模板
内联无效保存集合(
::boost::archive::my_oarchive&ar,
康斯特集装箱公司,
集合\大小\类型计数)
{
.....
}
模板
内联void save_集合(::boost::archive::my_oarchive&ar,const Container&s)
{
//记录元素的数量
集合大小类型计数(s.size());
保存集合(应收账款、应收账款、计数);
}
}//名称空间stl
}//命名空间序列化
}//名称空间提升
我曾经尝试过include命令并删除过一次#pragma,但仍然没有成功


有什么想法吗?

给定的代码不包含任何模板专门化,并且远离给定的代码不包含任何模板专门化,并且远离