Одной из замечательных новых функций предстоящего стандарта С++, С++ 0x, являются "ссылки rvalue". Ссылка rvalue похожа на ссылку lvalue (normal), за исключением того, что она может быть привязана к временному значению (обычно временное может быть привязано только к ссылке const
):
void FunctionWithLValueRef(int& a) {...}
void FunctionWithRValueRef(int&& a) {...}
int main() {
FunctionWithLValueRef(5); // error, 5 is a temporary
FunctionWithRValueRef(5); // okay
}
Итак, почему они изобрели совершенно новый тип, вместо того, чтобы просто удалить ограничения на нормальные ссылки, чтобы позволить им привязываться к временным ресурсам?