C++'s type system has always been stricter than C's. Even the following, totally valid C program, is ill-formed C++
int* x = malloc(5 * sizeof (int));
because in C++ you cannot implicitly cast a void pointer.