问题标签 [rvalue]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5110 浏览

c++ - c++:函数左值或右值

我刚刚通过阅读此页面开始学习 c++11 中的右值引用,但我被困在了第一页。这是我从该页面获取的代码。

  1. 为什么是foo()左值?是因为foo()返回int&基本上是左值吗?
  2. 为什么是foobar()右值?是因为foobar()退货int吗?
  3. 一般来说,你为什么要关心一个函数是否是一个右值?我想如果我阅读那篇文章的其余部分,我会得到我的答案。
0 投票
2 回答
257 浏览

c++ - 左值如何转换为右值

在这里,左值如何充当右值?我知道这是一个愚蠢的问题,但我只想让我的概念清楚 rvalue 和 lvalue 。

0 投票
3 回答
157 浏览

c++ - 在 C++11 中返回一个可变值

我想知道让一个方法返回一个 r 值。具体来说,我想知道是否有办法使用重载的运算符来做到这一点。我有这个代码:

我怎样才能改变它,以便我可以使用一些东西来达到

我听说过 C++11 中的右值引用,它们可能是一个潜在的解决方案吗?

编辑:我找到了一种方法来输入我的实际代码。

0 投票
2 回答
3217 浏览

c++ - 在 OS X 上,简单的 C++ 程序给出不正确的结果(这是命令行选项 'c++03' 与 'c++11' 的结果)

这个简单的程序(在 Linux 上编译时)将根据是否编译正确给出两个不同的答案-std=c++0x

问题:我无法在 OS X(Mountain Lion,10.8 SDK)上重现相同的内容。我错过了什么?


要明白我的意思,请执行以下操作(首先在 Linux 上,看看它应该如何工作):



第一个将打印一个十六进制地址,第二个将打印“Hello”。这是正确的行为,因为运算符<<解析为两个不同的东西(C++03 中没有右值引用,所以你去吧)。

现在,在 OS X 上尝试同样的事情:


(这会正确产生十六进制输出。)


(糟糕……仍然是十六进制输出……我们处于 C++11x 模式,但可能没有使用正确的标头?)


注意:编译器版本在这里:

注意:这本身不是 C++ 问题,而是 OS X 构建问题。对于那些感兴趣的人,它与 C++03 和 C++11 产生不同结果的原因在下面的答案之一中突出显示。

0 投票
3 回答
110 浏览

c++ - C++ 构造函数问题

我想知道是否有人可以帮助我解决c++gcc最新版本)中的奇怪行为。下面是一些成功编译的代码,由于缺少适当的构造函数,我预计会出现编译时错误。谁能解释发生了什么?

}

如果我尝试调用 的函数class A,我会得到一个编译时错误:

结果是:

谢谢!

0 投票
1 回答
95 浏览

php - php包含为右值?

我想知道是否可以使用 phpinclude作为右值,例如这个例子:

我做了一些实验,但似乎不可能。

我想以这种方式加载的 php 文件是对象和数组的缓存转储,与var_export()函数一起保存。

为了充分利用 PHP 的内部代码缓存系统,使用import(or ) 而不是正常的文件操作加载这些文件对我来说非常重要。require

0 投票
2 回答
611 浏览

c++ - C ++ 11 - 返回右值通过左值传递给函数?

C++11中,通常的做法是通过引用将左值传递给函数。

但是,是否可以通过右值引用将值传递给函数并通过左值返回该值?

为什么会或为什么不可能?

0 投票
2 回答
430 浏览

c++ - 为什么来自 rvalued-stl-container 的元素获取器返回左值?

我有一个代码必须处理重新评估的 stl 容器。我的问题是:为什么从 rvalued-stl-container 返回元素的成员函数,例如:

返回左值而不是右值?标准指定右值对象的成员是右值。我知道我可以用 . 显式移动返回的元素std::move。但是当返回值显然是右值时,具有左值返回类型的逻辑是什么?

如果您将这样的表达式用作某些值重载函数的参数,则会选择错误的重载并且被调用的函数将获得左值引用(很快就会变得悬空)。

0 投票
1 回答
409 浏览

c - 这五个关于左值的陈述中哪一个是正确的?

我正在做以下谜题。也许有人可以检查我是否选择了正确的答案。看一看。

以下哪一项是关于左值的正确陈述?

1 左值是涉及 long int 类型数量的算术运算的结果。

2 所有左值都可以用在赋值语句的右侧。

3 根据定义,左值是出现在赋值语句最右侧的值。

4 根据定义,左值是指针间接引用的存储空间。

5 左值是能够出现在移位运算符左侧的任何数量。

好的,左值是对内存中对象的引用。因此,乍一看,我想到了第 4 个答案,但现在看来不是正确的答案,因为 lvalue 不是存储本身(答案 4 暗示了这一点)。# 我认为答案 2 是正确的,因为左值可以用在赋值运算符的左侧和右侧。你怎么看?

0 投票
3 回答
4739 浏览

c++ - Pass lvalue to rvalue

I made a small 'blocking queue' class. It irritates me that I have created redundant code for values passed into the enqueue member function.

Here are the two functions that do the same exact thing (except the rvalue uses std::move to move the rvalue into the actual queue collection), except handles lvalue and rvalue respectively:

My question is, is there a way to combine these two functions, without losing support for rvalue references.