The reason I am conviced is that C++ was the last systems
programming language with manual memory management. All the
languages people are
developing as possible C++ replacement do have some form of
automatic
memory management.
Meanwhile smart pointers and a GC API became part of the C++
language standard. In the future, if you want to target Windows
8 Metro games, you will need to use WinRT which requires C++/CX
and makes use of reference counting in the language.
Apple added GC to Objective-C, which has some problems with
existing frameworks, so their next step was to introduce ARC.
This is why I think that eventually even games engines will be
developed
in a language that supports some kind of automatic memory
management be
it GC or reference counting.
Well games often already integrate scripting languages,
generally Lua or Mono, which are both GC based. But this is for
the game logic, not for the high performance parts of the code.
For a GC to be used at the C++/D layer it would need to be
1) optional always, D makes it optional but you loose a solid
chunk of the language if you ditch GC, what remains is in some
ways inferior to C++(no escaping lambda without GC, /cry)
2) no long pauses ever
I think most game engine stuff will continue to be written
without GC, as it doesn't really add much if what you are after
is raw performance. And C++ does have smart pointers which
perform much of what a GC does, but without the long pauses or
non deterministic destruction.