>>18
This. C++ is just a overly complex macro language on top of C.
When I get rid of OOP and the STL, I'm left with namespaces, lambdas/closures (macro sugar for function pointers and a static struct type representing the closure that captures data by either copying it or pointing to it), function argument-list overloading, default arguments, template functions/structs for a few things where it makes sense (like being able to overload a function on only the return type, by explicitly specifying the return type as a template parameter
[code]float4 a = make<float4>(1.0f, 2.0f, 3.0f, 4.0f); double4 a = make<double4>(1.0, 2.0, 3.0, 4.0);[code/]).
I know C11 now has preprocessor macro support for function overloading with the _Generic keyword and generic functions, but it's a bit more work for the programmer to use than in C++, due to ABI backwards compatibility issues. If C had namespaces and lambdas/closures, I would just use C.