, currently_in_use(in_use)
{}
+ // Provide a copy constructor that actually doesn't copy the
+ // internal state. This makes handling ScratchAndCopyDataObjects
+ // easier to handle with STL containers.
+ ScratchDataObject(const ScratchDataObject &)
+ : currently_in_use(false)
+ {}
+
ScratchDataObject(ScratchDataObject &&o) noexcept = default;
};
, currently_in_use(in_use)
{}
- // TODO: when we push back an object to the list of scratch objects, in
- // Worker::operator(), we first create an object and then copy
- // it to the end of this list. this involves having two objects
- // of the current type having pointers to it, each with their own
- // currently_in_use flag. there is probably little harm in this
- // because the original one goes out of scope right away again, but
- // it's certainly awkward. one way to avoid this would be to use
- // unique_ptr but we'd need to figure out a way to use it in
- // non-C++11 mode
- ScratchAndCopyDataObjects(const ScratchAndCopyDataObjects &o)
- : scratch_data(o.scratch_data)
- , copy_data(o.copy_data)
- , currently_in_use(o.currently_in_use)
+ // Provide a copy constructor that actually doesn't copy the
+ // internal state. This makes handling ScratchAndCopyDataObjects
+ // easier to handle with STL containers.
+ ScratchAndCopyDataObjects(const ScratchAndCopyDataObjects &)
+ : currently_in_use(false)
{}
};