I'm trying to serialize a class with a non-default constructor and static const data members,  so 
I have to override boost::serialization::save_construct_data() and load_construct_data().   I am 
getting a linking error:the static members referred to in save_construct_data()  cannot be found 
("undefined reference").  

#include <boost/archive/tmpdir.hpp>
#include <boost/archive/xml_iarchive.hpp>
#include <boost/archive/xml_oarchive.hpp>

// forward declarations
class A;
namespace boost { namespace serialization {
    template<class Archive>
    inline void save_construct_data(Archive &ar, const A *t, const unsigned int file_version);
} }

class A {
    friend class boost::serialization::access;

    // friend function (omitting load_construct_data() for brevity)
    template<class Archive>
    friend void save_construct_data(Archive &ar, const A *t, const unsigned int file_version);

    public:
    static const int var1 = 1;
    static const int var2 = 2;

    template<class Archive>
    void serialize(Archive & ar, const unsigned int file_version) 
    { 
        // do nothing 
    };
}   

// overridden Boost function
namespace boost { namespace serialization {
template<class Archive>
inline void save_construct_data(
    Archive &ar, const A *t, const unsigned int file_version)
{
    // link errors happen at both of these two lines ("undefined reference" of var1, var2).
    ar << boost::serialization::make_nvp("var1",  ::A::var1);
    ar << boost::serialization::make_nvp("var2",  t->var2);
};
}} // namespace…

This puzzles me since I thought that static members have external linkage.  This question seems
to be more about namespaces than it is about Boost::Serialization, but I post here because 
some Serialization user must have run into it.

Thanks,
Kurt