<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<TITLE>
    CWG Issue 1313</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="1313"></A><H4>1313.
  
Undefined pointer arithmetic in constant expressions
</H4>
<B>Section: </B>7.7&#160; [<A href="https://wg21.link/expr.const">expr.const</A>]
 &#160;&#160;&#160;

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

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

 <B>Date: </B>2011-05-07<BR>


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



<P>The requirements for constant expressions do not currently,
but should, exclude expressions that have undefined behavior, such as
pointer arithmetic when the pointers do not point to elements of the
same array.</P>

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

<P>Change 7.7 [<A href="https://wg21.link/expr.const#2">expr.const</A>] paragraph 2 as follows:</P>

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

<LI><P><DEL>a result that is not mathematically defined or not in the
range of representable values for its type;</DEL></P></LI>

<LI><P><INS>an operation that would have undefined behavior
[<I>Note:</I> including, for example, signed integer overflow (
Clause 7 [<A href="https://wg21.link/expr">expr</A>]), certain pointer arithmetic (7.6.6 [<A href="https://wg21.link/expr.add">expr.add</A>]), division by zero (7.6.5 [<A href="https://wg21.link/expr.mul">expr.mul</A>]), or certain
shift operations (7.6.7 [<A href="https://wg21.link/expr.shift">expr.shift</A>]) &#8212;<I>end
note</I>];</INS></P></LI>

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

<LI><P><DEL>a subtraction (7.6.6 [<A href="https://wg21.link/expr.add">expr.add</A>]) where both
operands are pointers;</DEL></P></LI>

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

</UL>

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