Change in 12.8 class.copy paragraph 8:
If the class definition does not explicitly declare a copy constructor,Change in 12.8 class.copy paragraph 10:andthere is no user-declared move constructor, and there is no user-declared move assignment operator, a copy constructor is implicitly declared as defaulted (8.4 dcl.fct.def8.4.2 dcl.fct.def.default). Such implicit declaration is deprecated if the class has a user-declared copy assignment operator or a user-declared destructor. ...
If theChange in 12.8 class.copy paragraph 20:classdefinition of a class X 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,
and- X does not have a user-declared copy assignment operator,
- X does not have a user-declared move assignment operator,
- X does not have a user-declared destructor, and
- the move constructor would not be implicitly defined as deleted.
If the class definition does not explicitly declare a copy assignment operator, there is no user-declared move constructor, and there is no user-declared move assignment operator, a copy assignment operator is implicitly declared as defaulted (Change in 12.8 class.copy paragraph 22:8.4 dcl.fct.def8.4.2 dcl.fct.def). Such implicit declaration is deprecated if the class has a user-declared copy constructor or a user-declared destructor. ...
If theInsert a new section after section D.4 depr.register:classdefinition of a class X does not explicitly declare a move assignment operator, one will be implicitly declared as defaulted if and only if[ Example: ... ]
- X does not have a user-declared copy constructor,
- X does not have a user-declared move constructor,
theX does not have a user-declared copy assignment operatoris not user-declared and,- X does not have a user-declared destructor, and
- the move assignment operator would not be implicitly defined as deleted.
The implicit declaration of a copy constructor is deprecated if the class has a user-declared copy assignment operator or a user-declared destructor. The implicit declaration of a copy assignment operator is deprecated if the class has a user-declared copy constructor or a user-declared destructor. (12.4 class.dtor, 12.8 class.copy)