<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<TITLE>
    CWG Issue 1066</TITLE>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<STYLE TYPE="text/css">
  INS { text-decoration:none; font-weight:bold; background-color:#A0FFA0 }
  .INS { text-decoration:none; background-color:#D0FFD0 }
  DEL { text-decoration:line-through; background-color:#FFA0A0 }
  .DEL { text-decoration:line-through; background-color: #FFD0D0 }
  @media (prefers-color-scheme: dark) {
    HTML { background-color:#202020; color:#f0f0f0; }
    A { color:#5bc0ff; }
    A:visited { color:#c6a8ff; }
    A:hover, a:focus { color:#afd7ff; }
    INS { background-color:#033a16; color:#aff5b4; }
    .INS { background-color: #033a16; }
    DEL { background-color:#67060c; color:#ffdcd7; }
    .DEL { background-color:#67060c; }
  }
  SPAN.cmnt { font-family:Times; font-style:italic }
</STYLE>
</HEAD>
<BODY>
<P><EM>This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21
  Core Issues List revision 118b.
  See http://www.open-std.org/jtc1/sc22/wg21/ for the official
  list.</EM></P>
<P>2025-09-28</P>
<HR>
<A NAME="1066"></A><H4>1066.
  
When is a copy/move assignment operator implicitly defined?
</H4>
<B>Section: </B>11.4.6&#160; [<A href="https://wg21.link/class.copy.assign">class.copy.assign</A>]
 &#160;&#160;&#160;

 <B>Status: </B>C++11
 &#160;&#160;&#160;

 <B>Submitter: </B>Mike Miller
 &#160;&#160;&#160;

 <B>Date: </B>2010-03-24<BR><BR>


<P>[Voted into the WP at the November, 2010 meeting.]</P>

<A href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3296.html#US64">N3092 comment
  US&#160;64<BR></A>

<P>According to 11.4.5.3 [<A href="https://wg21.link/class.copy.ctor#28">class.copy.ctor</A>] paragraph 28,</P>

<BLOCKQUOTE>

A copy/move assignment operator that is defaulted and not defined
as deleted is <I>implicitly defined</I> when an object of its
class type is assigned a value of its class type or a value of a
class type derived from its class type or when it is explicitly
defaulted after its first declaration.

</BLOCKQUOTE>

<P>This sounds as if any assignment to a class object, regardless
of whether it is a copy or a move assignment, defines both the
copy and move operators.  Presumably an assignment should only
define the assignment operator chosen by overload resolution for
the operation.  (Compare the corresponding wording in paragraph 14
for the copy/move constructors: &#8220;...<I>implicitly defined</I>
if it is used to initialize an object of its class type...&#8221;)</P>

<P><B>Proposed resolution (August, 2010):</B></P>

<P>This issue is resolved by the resolution of
<A HREF="1051.html">issue 1051</A>.</P>

<BR><BR>
</BODY>
</HTML>
