Let me present a real world problem that has a computer game corollary (sp?)
Have you played a lot of military strategy games? Particularly US Civil War games?
I have yet to have seen a good computer AI that simulates Stonewall Jackson. Specifically, I have yet to see one that can commence the opening move of the Battle of Chancellorsville (despite having less than half as many men as Joe Hooker, Jackson splits his forces in a dense woods and attacks aggressively from widely separated points).
Every sim of this battle I have seen, in order to get the computer to act like Jackson has to have the battle setup at the end game.
Jackson has to be placed in the position where he can begin battering Hooker's troops, or else the computer can't do it.
One of the big things computer AI does not do is see how ridiculous, can't-win maneuvers are sometimes the only way of achieving an irreducible goal (in others, something you cannot escape; also known as being screwed and doing the best you can).
Except with a little cheap randomization, there is no way to get a computer to craft a ballsy plan and see it through.
. . . Back to coding and what it has to do with all this . . .
Goto looping leads to issues about the main loop in C++ and whether it is breakable (real intelligence requires the ability to drift off and never come back-- make a crazy plan and stick to it).
Since, eventually, a real intelligence would have to program itself, that means we get stuck with needing a failure tolerant language.
Exceptions in C++ are handy, but they must be programmed in anticipation of an error; if intelligence allowed us to anticipate all errors, we'd be God (or more likely doing what we do now-- treating other intelligences as the cause of the errors and trying to bend them to our will, thus negating the value of anticipating the errors by causing more errors).
BASIC can, if coded on a low level of quality, go forever without error control.
Since any intelligence must be able to learn and program itself continually, it cannot stop to have a programmer kindly redo its code. Since the main use for machine intelligence is probably going to be deep space exploration-- or other functions where humans just aren't going any time soon-- these machine must be able to cope.
In computing terms, coping means getting by with crappy code and not falling apart because of it (being screwed).
The only thing C++ brings to the AI table that would be of interest is OOP. However, I suspect this "need" is just a rationalist assumption that all object belong in convenient categories.
A self-programming AI could cope by generating its own excessively long new variable names, probably just meaningless strings of numbers.
Whatever the case, what it comes down is that C++ does not cope with being screwed.
As a corporate language, built to avoid failure, C++ does not have the necessary looseness of coding and compilation to handle the inevitable failures of a leaving a machine to itself to learn and reprogram -- and I mean code, not just fill in a few variable and propagate a couple more based on a programmer's code -- as it encounters new problems.
Yeah, that's a hell of a leap. I know. It's a leap that will never be made.
Still, if it is to be made, I say using C++ is the equivalent of trying to jump the Grand Canyon with a loaded 18-wheeler.
Yeah, an 18-wheeler serves its purpose well; I am lead to believe most of my food arrives where I can get it because of 18-wheelers.
That truck just ain't goin' over the Grand Canyon.