UB
Undefined behavior - cppreference.com
ill-formed:有语法错误,或者能被检查出的语义错误。必须提供诊断(编译错误)。
ill-formed, no diagnostic required:正常编译,但有 UB。
implementation-defined behavior:正常编译,行为由实现定义,一个具体实现必须列出其文档。
unspecified behavior:能正常编译,行为在不同实现中有区别。一个具体实现不需要列出文档。
undefined behavior:可以编译,尽管可能有警告。行为是未定义的。
种类 | 诊断 | 行为 |
---|---|---|
ill-formed | 有 | 不能编译 |
ill-formed, no diagnostic required | 无 | 未定义 |
implementation-defined behavior | 无 | 实现相关,有文档 |
unspecified behavior | 无 | 实现相关,无文档 |
undefined behavior | 可能有 | 若能编译则未定义 |
UB 这一行看起来很像是 ill-formed 两行合起来。