Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
A listing of proposed changes to the core language can be found at www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2869.html. There are also links to the papers associated with each proposal. We briefly discuss some of the important core language changes that have been accepted into the working draft of the new standard. The number of proposals that make it into the working draft is likely to increase before the standard is finalized. The GNU C++ compiler has an optional C++0x mode which allows you to experiment with a number of the core language changes (gcc.gnu.org/projects/cxx0x.html). Visual Studio 2010 also supports some C++0x features—the Visual C++ Team Blog (blogs.msdn.com/vcblog/) contains updates on the status of C++0x in Visual Studio.
[15] Howard E. Hinnant, “A Proposal to Add an rvalue Reference to the C++ Language,” October 19, 2006, Document Number N2118=06-0188, www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html.
The rvalue reference type in C++0x allows you to bind an rvalue (temporary object) to a non-const reference. An rvalue reference is declared as T&& (where T is the type of the object being referenced) to distinguish it from a normal reference T& (now called an lvalue reference). An rvalue reference can be used to effectively implement move semantics—instead of being copied, the state of an object is moved, leaving the original with an empty value. For example, currently the following code creates a temporary string object and passes it to push_back, which then copies it into the vector.