C++11 has many new features and libraries that make it "feel like a new language"(Bjarne Stroustrup). These features will help reduce bugs, produce even more flexible code, and make everyone's lives easier overall. It's nearly 100% backward compatible so your old code shouldn't need to be modified. C++11 even makes your old code faster! Rvalue references and move semantics can be taken advantage of by old programs without modifying *anything* simply by having used the standard library. Lambdas, nullptr, type deduction, smart pointers, regexs, and multithreading are some of the other big features. I think you'll ]be glad you learned to use the new features. if you're still not convinced, read this link.
A quick list of some new features and the problems they solve:
- 'auto' keyword - This keyword as been changed meaning from linkage to type deduction. No more long obtuse iterator types, just use 'auto'.
- smart pointers - Sometimes you need garbage collection or something similar. Smart pointers have you mostly covered.
- regex - you don't need external libraries anymore. it's in the standard now and the implementation is high quality.
- multithreading! - no more system specific code, difficult low level thread handles and functions, or lack of language support. C++ now is built with threading in mind and a library to help you do it
The following features are already in both GCC 4.6(with option -std=C++0x) and VC10 so we can start using them now:
- nullptr(pdf) - No more integer, pointer confusion. nullptr takes care of that. No more using NULL, it's evil. nullptr is the solution.
- right angle brackets - You don't have to put spaces in between your template delimiters any more.
- static_assert - You can now make assertions at compile time. you don't have to use boost for this anymore.
- lambdas(pdf) - No more writing whole classes for simple predicates. just use a lambda. VC10 has most of the support but a few 'edge cases' are incorrect because they implemented before these cases were defined. GCC has full support for them.
- long long(pdf) - You can now use long long and unsigned long long in your code; it's official now.
hash tables - You now no longer need a less than predicate to store values in associative containers and you can get O(1) access and write times to boot! std::unordered_map and friends implement associative containers with hash_tables semantics. instead of a less than predicate these containers require an equality predicate and hash function.
tuple - No need to make structures every time you need to store more than 2 items in a singile unit. tuples allow arbitrarily many independent elements to be passed around as a single coherent unit.
GCC has *many* more C++11 features than VC10 as it stands right now. GCC 4.7 is out and you can use C++11 with option '-std=C++11'. GCC 4.7 has even more of the language and standard library implemented. you can see the full list of C++11 support for GCC here. VC11 will have more C++11 features and will be coming out soon.
I will update this list as compiler support increases. I would encourage everyone to use as many of your compiler's C++11 features as possible. here is a large list of compiler support by various compilers.