I'm trying to compile (with VS 2005) a simple example of serialization (boost 1.34) of a polymorphic class, but I get the following compile error:

basic_xml_oarchive.hpp(83) : error C2027: use of undefined type 'boost::STATIC_ASSERTION_FAILURE<x>'
1>        with
1>        [
1>            x=false
1>        ]

Can you help me? I've read the documentation and I didn't understand the difference with the example that I found in there.

Here is the source:
-----------------------------------------------------------------
//main.cpp

#include <iostream>
#include <fstream>
#include "boost/archive/xml_oarchive.hpp"
#include "boost/archive/xml_iarchive.hpp"

#include <boost/serialization/base_object.hpp>
#include <boost/serialization/is_abstract.hpp>
#include <boost/serialization/utility.hpp>

class base
{
public:
   base(): _a(0)
   {
   }

   base(double a): _a(a)
   {
   }

   virtual double f() = 0;

protected:
   double _a;

   //Serialitation procedure.  
   friend class boost::serialization::access;
   template<class Archive>
   void serialize(Archive & ar, const unsigned int version)
   {
      ar & boost::serialization::make_nvp("a", _a);
   }
};

BOOST_IS_ABSTRACT(base)

class derived: public base
{
public:
   derived(): base(0), _b(0)
   {
   }

   derived(double b): base(1), _b(b)
   {
   }

   double f()
   {
      return _a + _b;
   }

protected:
   double _b;

   //Serialitation procedure.  
   friend class boost::serialization::access;
   template<class Archive>
   void serialize(Archive & ar, const unsigned int version)
   {
      ar & boost::serialization::base_object<base>(*this);
      ar & boost::serialization::make_nvp("b", _b);
   }
};

int main()
{
   derived dc(5);

   {
      std::ofstream ofile("test.xml");
      boost::archive::xml_oarchive oa(ofile);
      oa << boost::serialization::make_nvp("test", dc);
   }

   return 0;
}
-----------------------------------------------------------------