
Frank Mori Hess <frank.hess@nist.gov> writes:
On Thursday 08 May 2008 10:03 am, Peter Dimov wrote:
It does have a default constructor. Movable types have to have an "empty" state in which to put the moved-from source, and the default constructor of a movable type usually creates such an "empty" object. (The proposed promise doesn't adhere to this "convention" though.)
My recollection is that the requirements are looser: a move can leave the moved-from source in any state it likes as long as it doesn't violate any of the class' specified invariants.
That's the requirement, but what Peter describes is the typical implementation for a move-only type. If unique_lock left the source holding the lock too then it wouldn't be unique any more, and everything would go wrong. Moving from a boost::unique_lock has always left the source empty (l.mutex()==NULL). The newly-added default constructor allows you to start with it like that. Anthony -- Anthony Williams | Just Software Solutions Ltd Custom Software Development | http://www.justsoftwaresolutions.co.uk Registered in England, Company Number 5478976. Registered Office: 15 Carrallack Mews, St Just, Cornwall, TR19 7UL