Annex C (informative) Compatibility [diff]

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

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

Affected subclause: [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.