[expr.call]
Change: Implicit declaration of functions is not allowed
.  Rationale:
The type-safe nature of C++
.  Effect on original feature:
Deletion of semantically well-defined feature
.  Note: the original feature was labeled as “obsolescent” in ISO C
.  Difficulty of converting:
Syntactic transformation
.  Facilities for producing explicit function declarations are fairly
widespread commercially
.   Rationale: Feature with surprising semantics
.  Effect on original feature: A valid ISO C expression utilizing the decrement operator on
a 
bool lvalue (for instance, via the C typedef in 
<stdbool.h>)
is ill-formed in this International Standard
.  
In C, a sizeof expression or cast expression may define a new type
.  For example,
p = (void*)(struct x {int i;} *)0;
defines a new type, struct 
x.  Rationale:
This prohibition helps to clarify the location of
definitions in the source code
.  Effect on original feature:
Deletion of semantically well-defined feature
.  Difficulty of converting:
Syntactic transformation
.   Rationale:
C++ is an object-oriented language, placing relatively
more emphasis on lvalues
.  For example, functions may
return lvalues
.  Effect on original feature:
Change to semantics of well-defined feature
.  Some C
expressions that implicitly rely on lvalue-to-rvalue
conversions will yield different results
.  For example,
char arr[100];
sizeof(0, arr)
yields
100
in C++ and
sizeof(char*)
in C
.  Difficulty of converting:
Programs must add explicit casts to the appropriate rvalue
.