I mean yes, I totally agree that the late 90s were really bad for portable C++ development. You couldn't trust the compilers, you had limited faith in the libraries, rewriting the container classes yourself and falling back on C idioms were commonplace. Man, we really had no idea who owned which pointer back then.
But there was a sweet spot around 2006, when with C++ and Qt4 you could reach every major desktop platform with a single codebase with essentially identical UIs bar the detailed widget rendering, and you could do it using code that was still largely acceptable to work with. I did a fair bit of successful work that way.
Then the iPhone came along, and a platform explosion, incompatible managed-code platforms, many different input and output devices to support, more variety in UI design styles, the world of walled gardens and having to recreate the UI layer again and again for each company's devices. Now that's settled down a bit, and instead we have the paralysis of choice among piles of UI/back-end languages and frameworks all with their own tradeoffs.
Still, at least C++ is a nicer language now.
In terms of platform sprawl I feel like we're back to the 1980s when there was Apple II, Mac, IBM PC, IBM clones (not always compatible), TRS-80, Commodore 64, etc.
On Android, it involve doing JNI + Java and cross compiling the AbiWord engine. Something like what Firefox for Android is doing.
But neither is in the pipe.