<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<TITLE>
    CWG Issue 1350</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="1350"></A><H4>1350.
  
Incorrect exception specification for inherited constructors
</H4>
<B>Section: </B>_N4527_.12.9&#160; [<A href="https://wg21.link/class.inhctor">class.inhctor</A>]
 &#160;&#160;&#160;

 <B>Status: </B>CD3
 &#160;&#160;&#160;

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

 <B>Date: </B>2011-08-16<BR>


<P>[Voted into the WP at the February, 2012 meeting;
moved to DR at the October, 2012 meeting.]</P>



<P>According to _N4527_.12.9 [<A href="https://wg21.link/class.inhctor#3">class.inhctor</A>] paragraph 3, the exception
specification for an inheriting constructor has the same exception
specification as the inherited constructor.  This ignores the
exception specifications of default constructors for base classes
and nonstatic data members and of functions called in
<I>brace-or-equals-initializer</I>s of nonstatic data members.</P>

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

<OL>
<LI><P>Delete the indicated bullet of _N4527_.12.9 [<A href="https://wg21.link/class.inhctor#2">class.inhctor</A>] paragraph 2:
</P></LI>

<UL><LI><DEL>the <I>exception-specification</I> (14.5 [<A href="https://wg21.link/except.spec">except.spec</A>]),</DEL></LI></UL>

<LI><P>Change _N4527_.12.9 [<A href="https://wg21.link/class.inhctor#3">class.inhctor</A>] paragraph 3 as follows:</P></LI>

<BLOCKQUOTE>

...[<I>Note:</I> Default arguments are not inherited. <INS>An
<I>exception-specification</I> is implied as specified in 14.5 [<A href="https://wg21.link/except.spec">except.spec</A>].</INS> &#8212;<I>end note</I>]

</BLOCKQUOTE>

<LI><P>Change 14.5 [<A href="https://wg21.link/except.spec#14">except.spec</A>] paragraph 14 as follows:</P></LI>

<BLOCKQUOTE>

An <INS>inheriting constructor (_N4527_.12.9 [<A href="https://wg21.link/class.inhctor">class.inhctor</A>]) and
an</INS> implicitly declared special member function (
11.4.4 [<A href="https://wg21.link/special">special</A>]) shall have an <I>exception-specification</I>.
If <TT>f</TT> is <INS>an inheriting constructor or</INS> an implicitly
declared default constructor, copy constructor, move constructor,
destructor, copy assignment operator, or move assignment operator, its
implicit <I>exception-specification</I> specifies the <I>type-id</I>
<TT>T</TT> if and only if <TT>T</TT> is allowed by the
<I>exception-specification</I> of a function directly invoked by
<TT>f</TT>'s implicit definition; <TT>f</TT> shall allow all
exceptions if any function it directly invokes allows all exceptions,
and <TT>f</TT> shall allow no exceptions if every function it directly
invokes allows no exceptions. <INS>[<I>Note:</I> an instantiation of
an inheriting constructor template has an implied
<I>exception-specification</I> as if it were a non-template inheriting
constructor. &#8212;<I>end note</I>]</INS> [<I>Example:</I>...

</BLOCKQUOTE>

</OL>

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