在C++03和C++11中,数组不能通过值从函数返回(只能通过引用/常量引用返回)(因为我们无法直接将一个数组赋值给另一个数组)。
这样的引用(rvalue reference to an array)有什么作用?它能在实际代码中使用吗,还是只是C++11标准的缺陷?
const size_t N = 10;
using Element = int;
using Array = Element[N];
Array array;
// does not compile
// Array GetArray()
// {
// return array;
// }
Array& GetArrayRef()
{
return array;
}
C++引入了一种新的引用类型——右值引用。它也可以与数组一起使用:
void TakeArray(Array&& value)
{
}
// ...
TakeArray(std::forward<Array>(array));
TakeArray(std::forward<Array>(GetArrayRef()));
这样的引用(rvalue reference to an array)有什么作用?它能在实际代码中使用吗,还是只是C++11标准的缺陷?
std::array
不是一个数组,它是一个std
容器。 - ConstructorTakeArray((int*)&& value)
。 - MatthiasB