Date: | 2010-11-12 |
Author: | Anthony
Williams Just Software Solutions Ltd |
Revised by: | Jason Merrill |
Document Number | N3216=10-0206 |
Revision | 3 |
These changes are against N3126.
If the class definition does not explicitly declare a move constructor, one will be implicitly declared as defaulted if and only if
X does not have a user-declared copy constructor andthe move constructor would not be implicitly defined as deleted.[ Note: When the move constructor is not implicitly declared or explicitly supplied, expressions that otherwise would have invoked the move constructor may instead invoke a copy constructor. — end note ]A move constructor is never implicitly declared, but can be explicitly defaulted; for the purpose of comparison to such an explicit declaration (8.4.2), the notionalTheimplicitly-declared move constructor for class Xwillis considered to have the formX::X(X&&)
Alter the first sentence of paragraph 12 as follows:
Delete paragraph 22.
If the class definition does not explicitly declare a move assignment operator... ...— end example ]
Paragraph 23:
A move assignment operator is never implicitly declared, but can be explicitly defaulted; for the purpose of comparison to such an explicit declaration (8.4.2), the notionalTheimplicitly-declared move assignment operator for a class Xwillis considered to have the formX& X::operator=(X&&);
Alter the first two sentences of paragraph 24 as follows:
X
has the return type X&
; it
returns the object for which the assignment operator is invoked, that
is, the object assigned to. An implicitly-declared
copyAlter paragraph 26 as follows: