Strong semantics for Assignable.#150
Conversation
|
There's a second commit that simplifies the specification of |
|
I'm not sure how I feel about this. Think of output iterators and proxy references. In what sense is some value assignable to *i when i is an ostream iterator? I feel like Assignable isn't the right place to put these semantics. |
|
We don't use EDIT: I've effectively co-opted EDIT 2: I've also used "equals" instead of |
|
Integrating these semantics for |
|
There's a fresh pull with |
|
I'm not seeing the |
I reset the branch, and ran |
* Remove the default for Assignable's second parameter. * Remove prose requirements from Copyable and Movable, they are now provided by Assignable. * exchange and default-swap both now require MoveConstructible and Assignable instead of Movable. * Movable can now explicitly require Swappable, and all is right with the world. * Use Assignable instead of is_assignable in the specification of advance(I, S) to ensure the post-condition (i == s).
Strong semantics for Assignable.
Assignable's second parameter.CopyableandMovable, they are now provided byAssignable.exchangeand default-swapboth now requireMoveConstructibleandAssignableinstead ofMovable.Movablecan now explicitly requireSwappable, and all is right with the world.Assignableinstead ofis_assignablein the specification ofadvance(I, S)to ensure the post-condition (i == s).