I've been using the auto keyword, lambdas and move constructors so far and all seems very cool. If the only thing they added was the auto keyword it would still be worth upgrading. This is just awesome...
auto it = someCollection.begin();
...but of course the downside is we now need cbegin() as well
This might help in lot of cases, but I really wonder if C++ 11 can reduce the pain of memory mangement. In my experience, auto variables are hardly I needed for my development. but really got tired of several gotchas and memory corruption and management with C++
Don't get me started. Today's object spaghetti makes the old C spaghetti pale in comparison.
C++11 advocate: Look, I made the code more awesome.
Me: It's slower, more complicated than it needs to be and much harder to find bugs. Why not just use C#?
C++11 advocate: But, it's more awesome!
(I actually heard someone today advocate that all pointers must be wrapped in shared_ptr, no matter what. I'm even working on some code that did that for absolutely no apparent reason--the delete happens within three lines and there is a catch around the call to which the pointer is passed AND the pointer is not actually shared. Yet, they not only used a shared_ptr, but spent time creating a factory to instantiate the only instantiation ever of the object to which the pointer is passed.)
Just easier. At first I was quite sceptical, anything that looks like it might break c++'s type safety is bound to raise suspicion but after reading and playing with it a bit it's actually harder to shoot yourself in the foot than I'd first thought.
The rvalue references are a much bigger change but we've seen some good performance benifits from that.