Some manual C code can adequately explain what C++ does automatically.
The difference is cost; you have to link against C code, for some platforms, what C++ provides for free on all platforms.
C++ cannot be explained fully with simple and safe C code. For example, theoretically one could implement the most basic usage of templates with macros; it would however not be easy to work with (error message in the wrong places) and it would still not emulate e.g. template specialization.