问题标签 [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.
c++ - c++:函数左值或右值
我刚刚通过阅读此页面开始学习 c++11 中的右值引用,但我被困在了第一页。这是我从该页面获取的代码。
- 为什么是
foo()
左值?是因为foo()
返回int&
基本上是左值吗? - 为什么是
foobar()
右值?是因为foobar()
退货int
吗? - 一般来说,你为什么要关心一个函数是否是一个右值?我想如果我阅读那篇文章的其余部分,我会得到我的答案。
c++ - 左值如何转换为右值
在这里,左值如何充当右值?我知道这是一个愚蠢的问题,但我只想让我的概念清楚 rvalue 和 lvalue 。
c++ - 在 C++11 中返回一个可变值
我想知道让一个方法返回一个 r 值。具体来说,我想知道是否有办法使用重载的运算符来做到这一点。我有这个代码:
我怎样才能改变它,以便我可以使用一些东西来达到
我听说过 C++11 中的右值引用,它们可能是一个潜在的解决方案吗?
编辑:我找到了一种方法来输入我的实际代码。
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 产生不同结果的原因在下面的答案之一中突出显示。
c++ - C++ 构造函数问题
我想知道是否有人可以帮助我解决c++
(gcc
最新版本)中的奇怪行为。下面是一些成功编译的代码,由于缺少适当的构造函数,我预计会出现编译时错误。谁能解释发生了什么?
}
如果我尝试调用 的函数class A
,我会得到一个编译时错误:
结果是:
谢谢!
php - php包含为右值?
我想知道是否可以使用 phpinclude
作为右值,例如这个例子:
我做了一些实验,但似乎不可能。
我想以这种方式加载的 php 文件是对象和数组的缓存转储,与var_export()
函数一起保存。
为了充分利用 PHP 的内部代码缓存系统,使用import
(or ) 而不是正常的文件操作加载这些文件对我来说非常重要。require
c++ - C ++ 11 - 返回右值通过左值传递给函数?
在C++11中,通常的做法是通过引用将左值传递给函数。
但是,是否可以通过右值引用将值传递给函数并通过左值返回该值?
为什么会或为什么不可能?
c++ - 为什么来自 rvalued-stl-container 的元素获取器返回左值?
我有一个代码必须处理重新评估的 stl 容器。我的问题是:为什么从 rvalued-stl-container 返回元素的成员函数,例如:
返回左值而不是右值?标准指定右值对象的成员是右值。我知道我可以用 . 显式移动返回的元素std::move
。但是当返回值显然是右值时,具有左值返回类型的逻辑是什么?
如果您将这样的表达式用作某些值重载函数的参数,则会选择错误的重载并且被调用的函数将获得左值引用(很快就会变得悬空)。
c - 这五个关于左值的陈述中哪一个是正确的?
我正在做以下谜题。也许有人可以检查我是否选择了正确的答案。看一看。
以下哪一项是关于左值的正确陈述?
1 左值是涉及 long int 类型数量的算术运算的结果。
2 所有左值都可以用在赋值语句的右侧。
3 根据定义,左值是出现在赋值语句最右侧的值。
4 根据定义,左值是指针间接引用的存储空间。
5 左值是能够出现在移位运算符左侧的任何数量。
好的,左值是对内存中对象的引用。因此,乍一看,我想到了第 4 个答案,但现在看来不是正确的答案,因为 lvalue 不是存储本身(答案 4 暗示了这一点)。# 我认为答案 2 是正确的,因为左值可以用在赋值运算符的左侧和右侧。你怎么看?
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.