Templates are complex? Compared to preprocessor they're child's play. They're meant to replace most uses of preprocessor. Other compile time code like constexpr is not mentioned.
Exceptions are not mentioned yet are actually the most complex C++ machinery.
Scope changes are not mentioned but are critical to RAII and other useful anti-bug features.
That you can actually enforce compile time type safety is not mentioned either.
Lambasting the extra visibility keywords when C already has the nastiness of static, extern and inline is very peculiar. They are also essentially type safety measures.
C++ standard library which is strictly superior to C is not mentioned either.
C++ may not be perfect but at least it is being improved. C is the unchanged ancient form where the main gain is that it does not have stack frame unwinding and has trivial ABI.