|
7248 | 7248 |
|
7249 | 7249 | \item
|
7250 | 7250 | an operation that would have undefined behavior
|
7251 |
| -as specified in \ref{intro} through \ref{cpp}; |
| 7251 | +as specified in \ref{intro} through \ref{cpp}, |
| 7252 | +excluding \ref{dcl.attr.assume}; |
7252 | 7253 | \begin{footnote}
|
7253 | 7254 | This includes,
|
7254 | 7255 | for example, signed integer overflow\iref{expr.pre}, certain
|
|
7404 | 7405 | a \keyword{goto} statement\iref{stmt.goto}.
|
7405 | 7406 | \end{itemize}
|
7406 | 7407 |
|
7407 |
| -If $E$ satisfies the constraints of a core constant expression, but |
7408 |
| -evaluation of $E$ would evaluate an operation that has undefined behavior |
7409 |
| -as specified in \ref{library} through \ref{\lastlibchapter}, or |
7410 |
| -an invocation of the \tcode{va_start} macro\iref{cstdarg.syn}, |
7411 |
| -it is unspecified whether $E$ is a core constant expression. |
7412 |
| - |
| 7408 | +It is unspecified whether $E$ is a core constant expression |
| 7409 | +if $E$ satisfies the constraints of a core constant expression, but |
| 7410 | +evaluation of $E$ would evaluate |
| 7411 | +\begin{itemize} |
| 7412 | +\item |
| 7413 | +an operation that has undefined behavior |
| 7414 | +as specified in \ref{library} through \ref{\lastlibchapter}, |
| 7415 | +\item |
| 7416 | +an invocation of the \tcode{va_start} macro\iref{cstdarg.syn}, or |
| 7417 | +\item |
| 7418 | +a statement with an assumption\iref{dcl.attr.assume} |
| 7419 | +whose converted \grammarterm{conditional-expression}, |
| 7420 | +if evaluated where the assumption appears, |
| 7421 | +would not disqualify $E$ from being a core constant expression and |
| 7422 | +would not evaluate to \tcode{true}. |
| 7423 | +\begin{note} |
| 7424 | +$E$ is not disqualified from being a core constant expression |
| 7425 | +if the hypothetical evaluation of |
| 7426 | +the converted \grammarterm{conditional-expression} |
| 7427 | +would disqualify $E$ from being a core constant expression. |
| 7428 | +\end{note} |
| 7429 | +\end{itemize} |
7413 | 7430 | \begin{example}
|
7414 | 7431 | \begin{codeblock}
|
7415 | 7432 | int x; // not constant
|
|
0 commit comments