Let me just make one suggestion: Learn another programming language. Learn something fundamentally different. Learn it thoroughly. Then decide if there have been advances made in the design of programming languages since C++.
I'd recommend Haskell, myself. It's the furthest you'll get from the mainstream, while still having incredible support for writing real software. But if you learn it, make sure to learn it thoroughly.
Understand what the IO type really is. Not how it's implemented, that's boring. Not what type classes it implements, that's still relatively boring. Understand the consequences of it being a higher-kinded type that describes IO operations as a first-class type. Understand what a type like "IO (IO (), IO ())" means, and why IO is far more interesting than just a tag on impure functions. Understand what a type like "FilePath -> IOMode -> (Handle -> IO r) -> IO r" means, and how it's related to the original point here.
And that's just scratching the surface. Is Haskell perfect? Far from it. Very far from it, in fact. But there are a lot of things it does better than any other language you can build real software with. It's worth learning what those things are. Once you see that there are fundamentally better ways, you might begin to welcome advances to mainstream languages.