问题标签 [xvalue]

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 回答
15387 浏览

swift - 在 Swift 的视图中查找标签的 X 值位置

我想计算x-value位于视图中的两个正方形之间的距离。

我没有工作,因为在框架中也有y-value并且不知道如何选择只有一个。如何x-values从正方形的位置添加?

0 投票
1 回答
429 浏览

c++11 - xvalue/prvalue 类别真的很重要吗?

创建 xvalue 的唯一方法是使用 static_cast< T&& > 转换。是的,根据标准,还有其他三种情况,但它们都需要另一个 xvalue。因此,为简单起见,我将假设这是目前唯一的方法。

我们需要传递一些东西给 static_cast。我们称之为«小发明»。无论 gizmo 到底是什么(左值或右值),static_cast 的结果都将是对完全相同事物的右值引用(我的意思是它不会产生任何临时对象)。结果的值类别可以是 prvalue 或 xvalue(对于对象)。让我们考虑第二种情况。

我知道 xvalue 对于对象来说比 prvalue 要好得多,因为它具有动态类型;但奇怪的是,我不知道任何带有 «gizmo» 的动作,其产生包含对同一事物的引用的纯右值:看起来所有将 «gizmo» 转换为纯右值的动作(如 static_cast< T > 或传递给函数非引用结果)将创建临时对象(使用调用复制构造函数等)。

总结一下,如果我们有对象类型的值,我们可以:

  1. 参考该值产生 xvalue

或者

  1. 参考临时对象(可能是值的副本)产生纯右值*

也许真正重要的是右值引用实际上指的是(相同的东西或副本)而不是 xvalue/prvalue 类别?如果是这样,我们可能会认为 static_cast< T&& > 只是保存对同一事物的引用并且不再关心 xvalue/prvalue 的唯一方法。是不是?


  • 当然,如果 value 已经是 prvalue,我们没有义务做一些事情来获得 prvalue,但在这种情况下,动态类型不会丢失。因此,再次与 xvalue 没有区别。
0 投票
1 回答
161 浏览

c++ - 由 value 返回的右值引用参数是 xvalue 吗?

我的理解是,在以下函数中,foo语句中的表达式return foo;是一个 xvalue,因为它表示的对象即将到期(即使foo在前面的语句中是一个左值):

哪些表达式会创建xvalues .

在以下情况下会改变吗?

return 语句中有foo一个 xvalue 吗?特别是,它是移动的候选者吗?而对于 RVO?还是应该使用一个return std::move(foo)

我不知道在foo第一种情况的 return 语句中将表达式分类为 xvalue 的正式规则是什么,所以我无法在第二种情况下对其进行测试。

0 投票
1 回答
315 浏览

python - 找出插值函数的最大偏差出现在哪里?

我需要将插值函数的最大偏差与函数的真实值进行比较f(x)=exp(x)。我不知道如何找到发生这种情况的 x 值,因为我曾经x=np.linspace()绘制插值和真实函数。

我的任务是首先使用f(x)=exp(x)给定的以下值进行线性插值x=[0,1,2],然后再使用x=[0,0.5,1,1.5,2].(我已经完成)

0 投票
0 回答
341 浏览

c++ - C++ 使用 xvalue(右值引用)作为左值

在下面的代码中,我有一个包含 10 个成员的大向量,可以分为 4 个子向量:

由于 vectorR只有一个成员,我更喜欢直接从data. 我想对这个值做这个操作:

喜欢我能做什么Q。但是,我收到此错误:

主文件

0 投票
1 回答
361 浏览

c++ - 为什么我需要在一个临时的 dynamic_bitset 上调用 std::move?

我在这里讲述一个冗长的背景故事,因为除了直接回答之外,我想知道导致这种情况的推理是否正确。

我有一个带dynamic_bitset<>参数的函数(来自Boost.dynamic_bitset)。说它看起来像这样。

碰巧它只使用从构造函数构建的临时foo(boost::dynamic_bitset<>{5}.set())对象调用,如(使用所有位设置的 5 位位集调用)。

我的位集只有少量位(少于 32 个)。所以一开始,我想“我只是按值传递它;副本比指针小。” 但后来我想“它是动态的,所以它必须在堆上分配空间。我想避免不必要的分配和释放。”

所以,我可以做到

但是一个引用是一个指针,而一个dynamic_bitset(大概)有一个指向它的数据的指针,所以使用dbwithinfoo会经历两层间接,这看起来很愚蠢。显然,最好的方法是将指向数据的指针复制到 中foo,而无需重新分配和复制堆上的数据。

“啊哈!” 我说。“当然,这就是移动语义的用途。” 所以,我将签名更改为

但是,调用foo(boost::dynamic_bitset<>{5}.set())会产生编译器错误,cannot bind 'boost::dynamic_bitset<>' lvalue to 'boost::dynamic_bitset<>&&'. 我必须改为打电话 foo(std::move(boost::dynamic_bitset<>{5}.set())) ,然后一切正常。

为什么我需要调用 std::move? 这似乎很明显是一个 xvalue(一个临时的即将到期),不是吗?

0 投票
2 回答
376 浏览

c++ - xvalues:非类类型和类类型之间的区别

考虑下面的最小示例:

它编译没有错误。
如果我改用非类类型,则会出现错误。
例如,下面的代码无法编译:

枚举、范围枚举等也会发生同样的情况。
错误(来自 GCC)是:

使用 xvalue(右值引用)作为左值

这背后的原因是什么?

我想这是对的,但我想了解为什么我可以对除非类之外的所有类型执行此操作。

0 投票
0 回答
57 浏览

c++11 - push_back 一个 PRvalue 到一个向量中

仔细阅读参考资料,移动构造函数只能由 Xvalue 调用。那么,怎么样...

std::vector<Class> vec vec.push_back(Class(..args..))

可以不将其移动(投射)到 Xvalue 吗?有没有一种特定的方法可以在 PRvalues 上使用移动语义?

0 投票
2 回答
451 浏览

c++ - C++11/14 中的 `xvalue` 行为

我有几个问题:1)在WrapperOfGetObj函数中,Wrapobjxvalue,所以我可以为它的任何成员赋值(xvalue - 即将过期!!)
2)什么是存储xvalue?这不是自动存储吗?
3)什么时候xvalue变成glvalue什么时候变成什么时候rvalue。(上面上下文中的任何例子都会让我明白这一点)。

0 投票
3 回答
134 浏览

c++ - 按值返回的函数的值类别总是xvalue吗?

根据我的理解,下面的代码应该调用Test类的移动构造函数,因为这个函数是按值返回的,这意味着表达式GetTestObj()应该是右值并且xvalues被隐式移动但是为什么这段代码调用复制构造函数?