C++ the right answer to the wrong question
"To be fair, if Apple stopped wasting time with Swift on iOS and moved to C++" says karlkarl.
You are right C++ is the right answer, but to the wrong question.
C++ is heavily based on a bad system language C with all its flaws.
It is C++ that has wasted nearly 40 years now trying to fix the problems with C and introduce a bad implementation of OO with its horrible versions of multiple inheritance and generics (templates).
As the obvious C++ zealot that karlkarl obviously is, it is not C++ that is broken, it is the platforms.
Actually, most platforms are only broken in the sense that they support C and C++. A good platform would reject these languages and most programs in them would cease to work (at least without a good deal of modification and bug fixing).
This is because such devices as pointers and the ++ operator (after which C++ is named) are the right answers to the wrong question. The right answer in small off-the-network systems that don't require correctness and security.
C and C++ are not the right answer in today's highly-connected and security sensitive environments and have cost the world trillions of dollars in data breaches and attacks.
Good security is based on languages that respect memory boundaries (no out-of-bound indexing, buffer overflows, etc). C and C++ cheat the industry of good security. There are many other reasons to move away from these languages.
http://ianjoyner.name/C++.html
https://www.quora.com/Why-is-the-C++-language-so-difficult-to-learn
https://www.quora.com/Do-the-programming-languages-which-do-not-support-the-use-of-pointers-in-code-leave-much-to-be-desired/answer/Ian-Joyner-1
It is time to move past languages like C and C++ and the weak CPU architectures they are based on.
(I'm not enamoured of the fact that Swift, C#, and Kotlin try to look something like C either. The continued use of () to call a (misnamed) function breaks the uniform access principle https://en.wikipedia.org/wiki/Uniform_access_principle. Or that it uses the mathematically universally accepted equality symbol '=' to mean something as completely different as assignment ':=' and this then has to be explained to learners to be careful. Silly perpetuation of the mistakes of C.)