Affected subclause: [basic.types]
Change: C allows mixing between “compatible types” in several places where C++ does not
.
For example,
enumerated types are “compatible” with their underlying types in C but, in C++,
enumerations are types distinct from their underlying types
. Rationale: Stricter type checking is essential for C++
. Effect on original feature: Deletion of semantically well-defined feature
. Difficulty of converting: Semantic transformation
. The “typesafe linkage” mechanism will find many, but not all,
such problems
. Some cases are allowed by C++
according to the “layout compatibility rules” of this
document
.