I have a custom stream that I am adaptiing to, so I build oarchive and iarchive classes derived from boost::archive::detail::common_xarchive according to the documentation.  I have a function that looks like the following to handle the specifics of loading and saving.

template<class T>
void load(T & t)
{
    // load data...
}

This seems to work for everything except std::string's.  I noticed it when writing out a std::map<std::string, std::string>.  The map is handled properly by the boost/serialization/map.hpp routines, but the strings are sent to my load function instead of being handled by boost/serialization/string.hpp.

Any insight in to what I could possibly be doing wrong would be greatly appreciated.

-doug