In my serialize function I am exporting a class which is a template wrapper around std:vector.

template <typename E>
class MyArray
{
public:
    vector<E> array;
    ...

    template <typename Archive>
    void MyArray::serialize(Archive & ar, const unsigned int version)
    {
        ar & BOOST_SERIALIZATION_NVP(array);
    }
   
}

When I add unique class instance variables to this array and then serialize it to XML...
...
MyArray<Color> colorsArray;

Color a;
a.name = "one";
colorsArray.add(a);

Color b;
b.name = "two";
colorsArray.add(b);
...


template <typename Archive>
void MyColorsObject::serialize(Archive & ar, const unsigned int version)
{
    ar & BOOST_SERIALIZATION_NVP(colorsArray);
}

Sometimes the XML comes out using object_id_reference instead of the unique values, and this then gets improperly unserialized with incorrect values, i.e. both colors will have "one" as the name.

I was able to disable object tracking and it works now, but I don't think it should be doing object reference tracking on instance variables.  Is it because of the template wrapper around vector?