The problem is not user space code - it is drivers. It takes a lot of work to move drivers to a newer kernel series when they are not included in Linus' source tree.
An why run new user space code on old systems? To share code between old and new projects, unless you want to keep the new systems stuck at old standards, you also have to upgrade the old systems. And upgrading the kernel is a lot of work, upgrading libc isn't as there should be no problem in recompiling the user space programs.
And yes, C++11 != C11 as commented by others, but I guess it will get difficult to compile a new gcc against an old libc very soon.