[
Note 1:
Undefined behavior may be expected when
this document omits any explicit
definition of behavior or when a program uses an erroneous construct or erroneous data
. Permissible undefined behavior ranges
from ignoring the situation completely with unpredictable results, to
behaving during translation or program execution in a documented manner
characteristic of the environment (with or without the issuance of a
diagnostic message), to terminating a translation or execution (with the
issuance of a diagnostic message)
. Many erroneous program constructs do
not engender undefined behavior; they are required to be diagnosed
. Evaluation of a constant expression (
[expr.const]) never exhibits behavior explicitly
specified as undefined in
[intro] through
[cpp]. —
end note]