14得票1回答
类,右值和右值引用

左值是绑定到内存的明确区域的值,而右值是表达式值,其存在是临时的,并不一定引用到明确的内存区域。每当在期望右值的位置使用左值时,编译器执行左值到右值的转换,然后继续评估。 http://www.eetimes.com/discussion/programming-pointers/40233...

19得票1回答
为什么这个右值引用绑定到左值?

我不明白为什么下面这段代码可以在GCC 8.0上编译:decltype(auto) foo(int&& r) { return r; } 在 foo 中,r 的声明类型是 int&&,因此 foo 的返回类型也是 int&&。但是 r 本...

7得票1回答
在调用具有不同右值引用类型的重载函数时,出现了意外的输出。

我在调用具有不同右值引用类型的重载函数时,遇到了代码中的意外行为。下面的代码片段演示了这个问题: #include <iostream> void foo(int&& x) { std::cout << "int Rvalue: " <...

31得票3回答
在C++0x中传递/移动构造函数的参数

如果我有一个带有n个参数的构造函数,其中任何参数都可以是rvalue和lvalue。是否可能通过移动语义来支持rvalues而无需为每个可能的rvalue/lvalue组合编写2^n个构造函数?

49得票4回答
移动构造函数应该使用const还是非const右值引用?

我曾在几个地方看到过有关复制和移动构造函数的推荐签名,如下所示: struct T { T(); T(const T& other); T(T&& other); }; 复制构造函数需要一个const引用,而移动构造函数需要一个非const...

10得票2回答
C++11中std::deque或std::list的移动插入

我相当了解右值引用的工作原理,但我不确定它们如何与STL中的迭代器一起使用。以下是我想要的内容:void insertList(std::list<int>& L, std::list<int>&& R, std::list<int>...

32得票2回答
声明本地变量为右值引用(rvalue-reference),例如T&& r = move(v),是否没有用处?

在特定情况下,你们能否给我提供一个具有说明性的例子,以证明以下陈述的有用性和必要性?AnyTypeMovable v; AnyTypeMovable&& r = move(v);

12得票2回答
右值引用还是左值?

我有一个类似于5年前发布的这个问题的问题:为什么rvalue引用变量不是rvalue? 我的主要问题是为什么我可以这样做:int&& k = 3; k++; 但是我做不到这点:(static_cast<int&&>(3))++; 我一直将右值引用解释...

21得票3回答
能否为右值*this重载std::string的"substr"函数并窃取资源?

我突然想到,如果std::string的substr操作可以从*this中窃取分配的内存,那么当它处理右值时,效率会更高。 N3225标准库包含了std::string的以下成员函数声明:basic_string substr(size_type pos = 0, size_type n = ...

19得票4回答
如何在添加新的C++0x右值引用运算符重载时减少冗余代码

我正在添加新的运算符重载以利用c++0x右值引用,但我觉得我正在产生很多冗余的代码。我有一个名为 tree 的类,它保存了一棵基于双精度值的代数运算树。下面是一个示例用例:tree x = 1.23; tree y = 8.19; tree z = (x + y)/67.31 - 3.15*y...