Some time ago I started working on P1705 Enumerating Core Undefined Behavior, I have collected a large set of undefined behavior (UB) during that time. There is going to be a lot of work involved in getting the annex into shape and editing it into the standard. While this work is ongoing, I will take some time to write blog posts to explore the set of undefined behaviors.
By Shafik Yaghmour
From the article:
In these posts I will cover: why we have each undefined behavior, some consequences of running afoul of each UB and tools we can use to catch UB. My plan is to enumerate them in the order they appear in the standard.
IFNDR (What is that?)
Before we go on, let’s talk about a term we find in the standard, ill-formed no diagnostic required; also known as IFNDR. This is like undefined behavior in that the standard places no requirements on a program that contains IFNDR constructs, see [intro.compliance.general]p2.2 which says (emphasis mine):
If a program contains a violation of a rule for which no diagnostic is required, this document places no requirement on implementations with respect to that program.
compared to the defintion of undefined behavior which says:The main difference is that IFNDR is a static property of your code (it is a propety of the program).
behavior for which this document imposes no requirements