#include <vector>
using namespace std;
struct A
{
vector<int> coll;
};
void f(const vector<int>&){}
void f(vector<int>&&){}
int main()
{
f(A().coll); // Is "A().coll" an xvalue?
的Rust Reference说: 转让或化合物的赋值表达式的左操作数是一个左值背景下,作为是一个一元借的单个操作数。 [...] 当右值是在左值上下文中使用,暂时未命名的左值创建并代替。 这个右值的提干显然与借款作品: let ref_to_i32 = &27; // a temporary i32 variable with value 27 is created
但它似乎并没有在分配工作
由于某种原因,我没有设法找到这个确切的问题。为什么允许将rvalue绑定到const lvalue reference,但是如果没有const则不可能相同? 我明白,右值的生命周期以某种方式获得扩展(在第一种情况下),但如果是这样,为什么编译器不允许更改'rvalue',这实际上不再是临时对象。 例如,请考虑下面的代码: int main(){
int &i=3; //produces
我有以下的底座和继承的类: // Abstract base class Manager.
class Manager
{
public:
Manager(Task*& _task);
protected:
// Reference of a pointer to the current task.
Task*& task;
};
// Abstract