Annex C (informative) Compatibility [diff]

C.1 C++ and ISO C [diff.iso]

C.1.3 Clause [conv]: standard conversions [diff.conv]

[conv.ptr]
Change: Converting void* to a pointer-to-object type requires casting

char a[10];
void* b=a;
void foo() {
  char* c=b;
}

ISO C will accept this usage of pointer to void being assigned to a pointer to object type. C++ will not.
Rationale: C++ tries harder than C to enforce compile-time type safety.
Effect on original feature: Deletion of semantically well-defined feature.
Difficulty of converting: Could be automated. Violations will be diagnosed by the C++ translator. The fix is to add a cast. For example:

char* c = (char*) b;


How widely used: This is fairly widely used but it is good programming practice to add the cast when assigning pointer-to-void to pointer-to-object. Some ISO C translators will give a warning if the cast is not used.