<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<TITLE>
    CWG Issue 1611</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="1611"></A><H4>1611.
  
Deleted default constructor for abstract class
</H4>
<B>Section: </B>11.4.5&#160; [<A href="https://wg21.link/class.ctor">class.ctor</A>]
 &#160;&#160;&#160;

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

 <B>Submitter: </B>Ville Voutilainen
 &#160;&#160;&#160;

 <B>Date: </B>2013-01-31<BR>


<P>[Moved to DR at the February, 2014 meeting.]</P>



<P>Bullet 6 of 11.4.5 [<A href="https://wg21.link/class.ctor#5">class.ctor</A>] paragraph 5 gives an abstract
class a deleted default constructor when the virtual base has no default
constructor, even though the abstract class's default constructor can never
construct the virtual base class subobject.  This seems parallel to the
case described in <A HREF="257.html">issue 257</A>
for <I>mem-initializer</I>s.  Should a similar accommodation be made to
avoid deleted default constructors in abstract classes?</P>

<P><B>Notes from the April, 2013 meeting:</B></P>

<P>CWG agreed that a virtual base class should not cause an abstract
class's default constructor to be defined as deleted.</P>

<P><B>Proposed resolution (August, 2013) [superseded]:</B></P>

<P>Change 11.4.5 [<A href="https://wg21.link/class.ctor#4">class.ctor</A>] paragraph 4 as follows:</P>

<BLOCKQUOTE>

<P>...A defaulted default constructor for class <TT>X</TT> is defined as
deleted if:</P>

<UL>
<LI><P>...</P></LI>

<LI><P>any <DEL>direct or virtual base class, or</DEL> non-static data
member with no <I>brace-or-equal-initializer</I>, <INS>or any direct base
class, or, if <TT>X</TT> is not abstract, any virtual base class,</INS> has
class type <TT>M</TT> (or array thereof) and either <TT>M</TT> has no
default constructor or overload resolution (12.2 [<A href="https://wg21.link/over.match">over.match</A>]) as
applied to <TT>M</TT>'s default constructor results in an ambiguity or in a
function that is deleted or inaccessible from the defaulted default
constructor, or</P></LI>

<LI><P>...</P></LI>

</UL>

</BLOCKQUOTE>

<P><B>Proposed resolution (November, 2013):</B></P>

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

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