Affected subclause: [basic.types]
Change: C allows “compatible types” in several places, C++ does not
.
For example,
otherwise-identical
struct types with different tag names
are “compatible” in C but are distinctly different types
in C++
. 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,
of such problems
. Those problems not found by typesafe linkage will continue to
function properly,
according to the “layout compatibility rules” of this
document
.