¿Cómo crear una interfaz para la serialización en Boost Serialization?

Soy un novato y quiero implementar una interfaz para obligar a los usuarios a implementar el método de serialización. Este método es plantilla y no puedo definirlo como virtual.

Me gustaría que el usuario solo tenga que implementar una función como esta:

template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
  ...
};

Intento crear esta interfaz:

  class interface_serializing
  {
  public:
    virtual ~interface_serializing(void)
    { }

    friend class boost::serialization::access;

    virtual void serialize(boost::archive::polymorphic_iarchive & ar, 
                   const unsigned int version) = 0;
    virtual void serialize(boost::archive::polymorphic_oarchive & ar, 
                   const unsigned int version)  = 0;
  };

Pero obliga al usuario a implementar estos dos métodos y no es lo que quiero.

¿Hay alguna forma de hacer lo que quiero?

Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta