因此,我一直在阅读the C++ standard并来到[defns.undefined](在我正在阅读的C ++ 17草案中为3.27。请注意,尽管我在这里引用C ++ 17 ,我在other standards中发现了类似的措词-即未定义行为的定义。我注意到了这个措辞(强调我的意思):
注意:当本国际标准省略对以下内容的任何明确定义时,可能会出现未定义的行为: 行为或程序使用错误的构造或错误的数据
现在,考虑这个问题,这种说法很有意义。有点说,如果标准不为其提供行为,则它具有未定义的行为。似乎是在说,如果您做的事情超出了标准的范围,则标准无话可说。那是有道理的。
但是,这也很奇怪,因为我一直认为标准必须明确声明未定义行为。但是,这似乎意味着除非另有说明,否则我们应该假定未定义行为。
如果是这种情况,那么是否不会存在未定义行为的实例,这些实例是未定义行为,因为标准没有明确给出某些构造的行为?如果 这样的事情是可能的,那么有可能生成(仍将编译的)未定义行为的示例,该示例由于此措辞而为未定义行为,或者会属于此范围之内的任何事物由于某种原因无法建造吗?