template < class eArchive >
void MtxAnsFunctionIntegerPipe::serialize( eArchive& aArchive, const unsigned int aVersion )
{
        aArchive & BOOST_SERIALIZATION_BASE_OBJECT_NVP( MtxAnmFunctionTpl<int> ) ;
        aArchive & BOOST_SERIALIZATION_NVP( mVariable ) ;
}

#define BOOST_SERIALIZATION_BASE_OBJECT_NVP(name)                  \
    boost::serialization::make_nvp(                                \
        BOOST_PP_STRINGIZE(name),                                  \
        boost::serialization::base_object<name >(*this)            \

The stringized class name ("MtxAnmFunctionTpl<int>") generate a non valid XML tag name (due to < > )

There is no BOOST_SERIALIZATION_BASE_OBJECT_NVP2( type, tag) macro
(as BOOST_CLASS_EXPORT_KEY2(class, key) for BOOST_EXPORT_CLASS_KEY(class) ).

Such a macro is necessary to write things like : 

        aArchive & BOOST_SERIALIZATION_BASE_OBJECT_NVP2( MtxAnmFunctionTpl<int>, "MtxAnmFunctionTplInt" ) ;

In the next release ?
 
Alain K.