<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<TITLE>
    CWG Issue 1022</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="1022"></A><H4>1022.
  
Can an enumeration variable have values outside the values of the enumeration?
</H4>
<B>Section: </B>9.8.1&#160; [<A href="https://wg21.link/dcl.enum">dcl.enum</A>]
 &#160;&#160;&#160;

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

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

 <B>Date: </B>2010-01-22<BR><BR>


<P>[Voted into the WP at the March, 2011 meeting.]</P>

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



<P>According to 9.8.1 [<A href="https://wg21.link/dcl.enum#10">dcl.enum</A>] paragraph 10,</P>

<BLOCKQUOTE>

An expression of arithmetic or enumeration type can be converted
to an enumeration type explicitly.  The value is unchanged if it
is in the range of enumeration values of the enumeration type;
otherwise the resulting enumeration value is unspecified.

</BLOCKQUOTE>

<P>(There is similar wording in 7.6.1.9 [<A href="https://wg21.link/expr.static.cast">expr.static.cast</A>].)
Does the phrase &#8220;resulting enumeration value&#8221; mean
that the result, although unspecified, must lie within the range
of enumeration values of the enumeration type?  Existing practice
seems to allow out-of-range values to be preserved if the
underlying type is large enough to represent the value.  This
freedom is important both for efficiency (to avoid having to mask
values while storing and/or fetching) and to prevent optimizers
from removing code that tests for out-of-range values.</P>

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

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

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