问题标签 [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 回答
225 浏览

c++ - 现代c++,对xvalue的理解

现代 C++ 只添加了一种新类型“xvalue”?函数返回的右引用是xvalue,this是定义的,就像函数参数中的右引用一样,只能绑定右值?这些理解正确吗?与此主题相关的问题和答案从学习者的角度处理此问题。这里我尝试从设计师的角度去了解这个话题。例如,int b =3;int&& x = std::move(b); std::move 的这个返回值是一个 xvalue,它可以绑定到 rreference,这是设计者设置的规则。(合理可用)。设计者还可以设置一个xvalue需要绑定左引用的规则,即使这不是一个好的规则。

0 投票
1 回答
548 浏览

c++ - “xvalue 有身份”是什么意思?

C++11 引入了新的值类别,其中之一是xvalue.

Stroustrup 将其解释为类似于 ( imcategory):“它是一个值,具有标识,但可以从中移出”。

另一个来源, cppreference解释说:

泛左值是一个表达式,其评估决定了对象、位域或函数的身份;

And xvalueis a glvalue,所以这 is 陈述也适用于xvalue

现在,我想如果 anxvalue有身份,那么我可以检查两个xvalues 是否引用同一个对象,所以我取 an 的地址xvalue。事实证明,这是不允许的:

xvalue有身份是什么意思?

0 投票
0 回答
89 浏览

c++ - 分配了一个临时数组,但没有分配一个临时主值

我很惊讶这段C++代码被编译了:

等效组件是

根据这段代码,定义了一个没有任何名称的数组,然后对其进行分配。

有趣的是,当没有数组时,代码不会编译:

1- 为什么在 C++ 中第一个表达式(也许你称之为分配给一个 xvalue)对于临时数组是合法的,但对于基本主类型不是第二个?为什么语言是这样设计的?

2-这种临时数组的应用是什么?

0 投票
1 回答
208 浏览

c++ - 这个表达式是 xvalue 吗?

C++ 标准对“xvalues”(N4762 § 7.2.1.4)有以下说明:

一个表达式是一个 xvalue,如果它是:
- 。. .
- 一个类成员访问表达式,指定一个非引用类型的非静态数据成员,其中对象表达式是一个 xvalue

考虑以下代码片段(使用 Boost 打印表达式的类型):

我的问题是关于表达式std::move(x).var

根据标准中的文本,我希望表达式是一个 xvalue,但输出是int,而不是int &&

我在这里想念什么?

0 投票
2 回答
1174 浏览

c# - C#图表控件:水平条形图的X值对于系列中的所有点都是0

我的应用程序中有一个水平堆叠的条形图,我试图弄清楚当用户单击条形时如何获取 X 轴值。问题是当我在运行时查看值时,Y 值很好,但 X 值全为 0。

屏幕截图

在上图中,浅蓝色条来自Series[0]并代表 MTD 销售额,而较暗的条来自Series[1]去年同月的销售额。我的目标是当用户双击一个条形图时,他会被带到该销售人员的详细销售报告中。

我没有尝试将我的图表切换到常规条形图,因为这是我最终需要的样子。但我开始怀疑我在XValue字段中得到全 0 的原因是因为这个还是因为我使用字符串作为值的类型。

有没有人遇到过这个问题或有任何关于如何解决它的线索?

运行时点的屏幕截图

0 投票
1 回答
238 浏览

c++ - 右值的成员访问运算符应该是 xvalue 吗?

cpprefernce 部分:值类别中,它声明“对象表达式的成员,其中 a 是右值,m 是非引用类型的非静态数据成员”是 xvalue。在标准中(我在:N4140,C++14 标准草案中找到)它声明(第 87 页)“如果表达式是 xvalue,则表达式是 xvalue……指定非静态数据成员的类成员访问表达式对象表达式是 xvalue 的非引用类型。”

我想用以下代码检查我对此的理解:

如果我的计算是正确的,那么B().i是“对象表达式的成员,其中 [ B()] 是一个右值”,并且根据引用该表达式应该是一个 xvalue,并且返回的类型decltype应该是 int&&。请注意,我正在使用gcc version 7.3.0 (Ubuntu 7.3.0-27ubuntu1~18.04),并且我尝试了没有标志和-std=c++14.

(为了清楚起见,我也在检查我对“decltype”的理解,但我之前链接到的标准和参考文献一字不差地同意 decltype 的行为)。

抱歉,这不是问题……我说的对吗?是否应该更新参考以澄清这种行为?

0 投票
2 回答
85 浏览

c++ - 为什么临时延长寿命会导致多次调用析构函数?

考虑以下代码段:

当我跑TakeTemp(GetTemp());的时候,输出看起来像

请注意,~Temp()此处调用了两次(但仅构造了 1 个临时 obj)。这看起来很奇怪,因为 1) 返回的 temp 变量GetTemp()的生命周期应该扩展到完整的表达式,以及 2) 由于我们temp直接返回 in TakeTemp,因此返回值优化将重用相同的对象。

谁能解释为什么这里有多个 dstor 调用?

(请注意,如果我们放置更多的 TakeTemp() 层,dstor 调用的数量会成比例地增长。)

0 投票
1 回答
47 浏览

c++ - 为什么函数调用是 xvalue(如果返回类型是 rvalue)?

假设我们有一个函数:

据我所知的表达式:

都是 xvalue。但为什么?为什么他们不是prvalue?我有点困惑。

0 投票
1 回答
100 浏览

c++11 - 我应该采取哪些步骤来确定表达式的值类别?

我对确定表达式的值类别感到很困惑。您能否提供确定表达式的值类别应采取的基本步骤(应分析什么)?

0 投票
2 回答
372 浏览

c++ - 什么是 C++ 中的 xvalues

我试图了解价值类别的差异,我发现了微软的这个文档

在此处输入图像描述

为什么是xvaluea glvalue?他们为什么不说An xvalue is an glvalue or an rvalue?在我看来,这句话是故意表达的,但我不明白为什么