Building on this,
@Megatorg you should familiarize yourself of the new r-value reference system too. Fundamentally it is meant to allow you to capture temporary values, r-values let you capture temporary values without any copying, or without having to const-qualify them. R-values are also part of the new move constructor system.
Move constructors allow for resource reuse, for example move constructing a vector essentially takes the owned memory from the source, and nulls the source.
C++:
// We want to assign this vector
std::vector<int> a;
{
// Temporary vector
std::vector<int> b{1, 2, 3};
// .... Do something complicated to b
// Now we want to assign a from the results
// a = b; // Will copy
a = std::move(b); // Uses move assignment operator, does not create a copy of b
// Effectively a is cleared, then a and b are swapped
// A's destruction at this point has no side effects, because it has been cleared
}
// A now contains the contents of b