struct Object : ReferenceCountedObject
{
typedef ReferenceCountedObjectPtr <Object> Ptr;
};
struct Container
{
Atomic <Object::Ptr> m_object;
void set (Object::Ptr object)
{
Object::Ptr prev = m_object.exchange (object);
// use prev
}
};
Is this guaranteed to work? or does the template argument to Atomic<> have to be a primitive type (i.e. have trivial constructor and destructors)?
It certainly compiles…