问题标签 [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.
swift - 在 Swift 的视图中查找标签的 X 值位置
我想计算x-value
位于视图中的两个正方形之间的距离。
我没有工作,因为在框架中也有y-value
并且不知道如何选择只有一个。如何x-values
从正方形的位置添加?
c++11 - xvalue/prvalue 类别真的很重要吗?
创建 xvalue 的唯一方法是使用 static_cast< T&& > 转换。是的,根据标准,还有其他三种情况,但它们都需要另一个 xvalue。因此,为简单起见,我将假设这是目前唯一的方法。
我们需要传递一些东西给 static_cast。我们称之为«小发明»。无论 gizmo 到底是什么(左值或右值),static_cast 的结果都将是对完全相同事物的右值引用(我的意思是它不会产生任何临时对象)。结果的值类别可以是 prvalue 或 xvalue(对于对象)。让我们考虑第二种情况。
我知道 xvalue 对于对象来说比 prvalue 要好得多,因为它具有动态类型;但奇怪的是,我不知道任何带有 «gizmo» 的动作,其产生包含对同一事物的引用的纯右值:看起来所有将 «gizmo» 转换为纯右值的动作(如 static_cast< T > 或传递给函数非引用结果)将创建临时对象(使用调用复制构造函数等)。
总结一下,如果我们有对象类型的值,我们可以:
- 参考该值产生 xvalue
或者
- 参考临时对象(可能是值的副本)产生纯右值*
也许真正重要的是右值引用实际上指的是(相同的东西或副本)而不是 xvalue/prvalue 类别?如果是这样,我们可能会认为 static_cast< T&& > 只是保存对同一事物的引用并且不再关心 xvalue/prvalue 的唯一方法。是不是?
- 当然,如果 value 已经是 prvalue,我们没有义务做一些事情来获得 prvalue,但在这种情况下,动态类型不会丢失。因此,再次与 xvalue 没有区别。
c++ - 由 value 返回的右值引用参数是 xvalue 吗?
我的理解是,在以下函数中,foo
语句中的表达式return foo;
是一个 xvalue,因为它表示的对象即将到期(即使foo
在前面的语句中是一个左值):
哪些表达式会创建xvalues ?.
在以下情况下会改变吗?
return 语句中有foo
一个 xvalue 吗?特别是,它是移动的候选者吗?而对于 RVO?还是应该使用一个return std::move(foo)
?
我不知道在foo
第一种情况的 return 语句中将表达式分类为 xvalue 的正式规则是什么,所以我无法在第二种情况下对其进行测试。
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]
.(我已经完成)
c++ - C++ 使用 xvalue(右值引用)作为左值
在下面的代码中,我有一个包含 10 个成员的大向量,可以分为 4 个子向量:
由于 vectorR
只有一个成员,我更喜欢直接从data
. 我想对这个值做这个操作:
喜欢我能做什么Q
。但是,我收到此错误:
主文件
c++ - 为什么我需要在一个临时的 dynamic_bitset 上调用 std::move?
我在这里讲述一个冗长的背景故事,因为除了直接回答之外,我想知道导致这种情况的推理是否正确。
我有一个带dynamic_bitset<>
参数的函数(来自Boost.dynamic_bitset)。说它看起来像这样。
碰巧它只使用从构造函数构建的临时foo(boost::dynamic_bitset<>{5}.set())
对象调用,如(使用所有位设置的 5 位位集调用)。
我的位集只有少量位(少于 32 个)。所以一开始,我想“我只是按值传递它;副本比指针小。” 但后来我想“它是动态的,所以它必须在堆上分配空间。我想避免不必要的分配和释放。”
所以,我可以做到
但是一个引用是一个指针,而一个dynamic_bitset(大概)有一个指向它的数据的指针,所以使用db
withinfoo
会经历两层间接,这看起来很愚蠢。显然,最好的方法是将指向数据的指针复制到 中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(一个临时的即将到期),不是吗?
c++ - xvalues:非类类型和类类型之间的区别
考虑下面的最小示例:
它编译没有错误。
如果我改用非类类型,则会出现错误。
例如,下面的代码无法编译:
枚举、范围枚举等也会发生同样的情况。
错误(来自 GCC)是:
使用 xvalue(右值引用)作为左值
这背后的原因是什么?
我想这是对的,但我想了解为什么我可以对除非类之外的所有类型执行此操作。
c++11 - push_back 一个 PRvalue 到一个向量中
仔细阅读参考资料,移动构造函数只能由 Xvalue 调用。那么,怎么样...
std::vector<Class> vec
vec.push_back(Class(..args..))
可以不将其移动(投射)到 Xvalue 吗?有没有一种特定的方法可以在 PRvalues 上使用移动语义?
c++ - C++11/14 中的 `xvalue` 行为
我有几个问题:1)在WrapperOfGetObj
函数中,Wrapobj
是xvalue,所以我可以为它的任何成员赋值(xvalue - 即将过期!!)
2)什么是存储xvalue
?这不是自动存储吗?
3)什么时候xvalue
变成glvalue
什么时候变成什么时候rvalue
。(上面上下文中的任何例子都会让我明白这一点)。
c++ - 按值返回的函数的值类别总是xvalue吗?
根据我的理解,下面的代码应该调用Test
类的移动构造函数,因为这个函数是按值返回的,这意味着表达式GetTestObj()
应该是右值并且xvalues被隐式移动但是为什么这段代码调用复制构造函数?