问题标签 [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 投票
5 回答
1354 浏览

c++ - 什么是 decltype(0 + 0)?

(由答案提示。)

给定 N3290,§7.1.6.2p4,其中列表项未编号,但为方便起见在此处编号:

decltype(e) 表示的类型定义如下:

  1. 如果 e 是不带括号的 id 表达式或不带括号的类成员访问 (5.2.5),则 decltype(e) 是由 e 命名的实体的类型。如果没有这样的实体,或者如果 e 命名了一组重载函数,则程序是非良构的;
  2. 否则,如果 e 是一个 xvalue,则 decltype(e) 是 T&&,其中 T 是 e 的类型;
  3. 否则,如果 e 是左值,则 decltype(e) 是 T&,其中 T 是 e 的类型;
  4. 否则,decltype(e) 是 e 的类型。

decltype(0 + 0) 指定的类型是什么?

第 1 项不适用,第 2 项可能,但如果不适用,则第 3 项不适用,结果为 4。那么,什么是 xvalue,0 + 0 是 xvalue 吗?

§3.10p1:

一个 xvalue(一个“eXpiring”值)也指一个对象,通常接近其生命周期的末尾(例如,它的资源可能会被移动)。xvalue 是某些涉及右值引用的表达式的结果 (8.3.2)。

我在 §8.3.2 中看不到任何有用的东西,但我知道“0 + 0”不涉及任何右值引用。文字 0 是一个纯右值,它是“一个不是 xvalue 的右值”(§3.10p1)。我相信“0 + 0”也是一个prvalue。如果这是真的,“decltype(0 + 0)”将是 int(不是 int&&)。

我在解释中是否遗漏了什么?这段代码格式正确吗?

该代码在 GCC 4.7.0 20110427 和 Clang 2.9(主干 126116)上编译。例如,如果 decltype 指定了一个 int&& 类型,那么它的格式就不是很好。

0 投票
1 回答
885 浏览

iphone - xcode CGPoint arc4random不工作

我有 22 张图片... 11 张是(rightwall1、rightwall2、rightwall3 等),另外 11 张是(leftwall1、leftwall2、leftwall3 等)

我通过将它们的 y 值设置为之前的墙壁 y 值加上墙壁的高度(所有墙壁的高度相同),将它们放在另一个之上。

这很好用!

现在,我试图使用 arc4random 设置 x 值,这样它们就会在一定范围内跳跃整个地方......

右边的墙完美地工作,但左边的墙,其中一些工作,但大部分没有出现在屏幕上。

我手动将 x 值 1 设置为 -15,它显示在屏幕上,低于 arc4random 允许的值。

我能想到的唯一问题是我为左墙减去错误?

这是设置墙壁位置的代码,我在整个项目中还没有其他代码。

0 投票
2 回答
1294 浏览

c++ - 当 xvalue 绑定到 const 左值引用时,它的生命周期是否会延长?

如果我编写以下代码:

然后g++抱怨:

好的,感谢什么是右值、左值、xvalues、glvalues 和 prvalues?我知道一个 xvalue 意味着它即将“过期”,这是有道理的。但现在如果我这样做:

这个“工作”很好,会打印一个地址。所以,我有几个问题:

  1. 如果值即将过期,为什么我可以引用它?引用不会使原始对象保持活动状态(对吗?)。
  2. 这样的引用会导致未定义的行为吗?例如,因为我们引用了一个可能已经被破坏的对象?

一般来说,有没有办法知道右值引用的生命周期?

0 投票
1 回答
665 浏览

c++ - 临时对象是 xvalues 吗?

我目前正在写我的学位论文,它还涉及对 C++11 背后的理论的一些解释,这真的很好,因为 C++ 是我选择的编程语言,并且该标准或多或少是免费提供的(N3337)让自己迷路在。

然而,当我试图准确而详细地解释新的 xvalue 类别时,我碰壁了。据我了解,临时对象始终是 xvalue,但我在标准中找不到对此的任何引用。据我了解,对具有非引用返回类型的函数的函数调用表达式的值类别是 xvalue。该标准说“xvalue 是某些涉及右值引用的表达式的结果”,这让我很烦恼。例如:

正如预期的那样,上面将调用以右值引用作为参数的重载函数。然而 createObject() 不返回一个右值引用,它返回一个 TestClass 类型的临时对象。我的问题是现在,我必须解释它背后的原因。表达式“createObject()”的计算结果是什么?如果它确实是一个 xvalue,因为它返回一个临时对象,那么它背后的原因很清楚,并且在重载决议期间,右值引用更受青睐。如果没有,关于标准的这种行为的解释是什么?是否在某个地方定义了一些我还没有找到的隐式转换逻辑?

如果有人可以帮助我解决这个问题,我将非常感激,因为即使经过几天的挖掘和阅读,我还没有提出合理的解释。提前非常感谢。

0 投票
4 回答
5394 浏览

c++ - 什么表达式创建 xvalues?

我试图理解 C++11 的概念。

我的标准草案说:

一个 xvalue(一个“eXpiring”值)也指一个对象,通常接近其生命周期的末尾(例如,它的资源可能会被移动)。xvalue 是某些涉及右值引用的表达式的结果 (8.3.2)。[ 示例:调用返回类型为右值引用的函数的结果是 xvalue。—结束示例]

好的,那么产生 xvalues 的“某些类型的表达式”到底是什么?规范的这一部分没有详细列出这些表达式。

我理解左值和纯右值(至少我认为,我理解)。

0 投票
1 回答
2397 浏览

mschart - 从 MSChart 系列中的 X 值中查找 Y 值

我已经使用 MSChart 2008 创建了一个折线图。我在 x 轴上有日期,在 y 轴上有双值。现在我需要在今天的日期找到 Y 值(这将是我的 x 值)..任何人都可以帮我实现这个。

谢谢

0 投票
1 回答
1566 浏览

c++ - 何时何地使用 xvalue?

我在 上阅读了标准xvalue。它与rvalue reference表达密切相关。但是在编程的时候,真的找不到需要的场景xvalue

例如:函数myClass&& f()返回一个rvalue reference. 所以表达式f()是xvalue。但这有什么用?如何在编程中使用这种技术?

如果定义了另一个函数,和myClass g()有什么区别?g()f()

在什么情况下我应该使用f() and xvalue而不是g() prvalue

0 投票
2 回答
1571 浏览

c++ - 在 C++ 中,产生类类型临时变量的表达式可以属于哪些类别(左值、右值、xvalue 等)?

这是一些示例代码:

Foo(5) 之类的表达式是纯右值还是通用右值?我可以在这些表达式上调用 get_addr() 的事实是否意味着它们具有身份?或者我不能应用默认的 & 运算符(我的意思是非重载)这一事实是否意味着它们没有身份,因此是纯右值?

是否也可以公平地说,通过产生它的表达式产生的价值的可变性与这个价值分类正交?

0 投票
0 回答
922 浏览

c# - C# 图表 XValue 为空

我在获取 AxisX 的值时遇到问题。

我添加了新的积分形式dataTable

我使用 mouse_move 事件来获取值并在标签中显示它们。

奇怪的prop.XValue是空的。有没有人有任何想法?

0 投票
2 回答
406 浏览

c++ - 自动 xvalue 优化

有点令人惊讶(对我来说),以下两个程序编译为不同的输出,后一个程序具有更好的性能(用 gcc 和 clang 测试):

对比

有人可以向我解释为什么编译器不会(或不能)b在最后一个赋值中自动考虑一个 xvalue 并在没有显式转换的情况下应用移动语义std::move吗?

编辑:编译(g++|clang++) -std=c++11 -O3 -o test test.cpp