问题标签 [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.
c++ - rvalue、lvalues、xvalues、glvalues 和 prvalues 的示例?
这篇文章什么是右值、左值、xvalues、glvalues 和 prvalues?提供了 rvalue、lvalues、xvalues、glvalues 和 prvalues 的定义,但我没有看到示例。
我认为我对 lvalues 和 rvalues 有深入的了解,但对 xvalues、glvalues 和 prvalues 了解不多。每个示例(代码)及其区分确实会有所帮助。
python - Matplotlib 中 y 值的定位 - Matplotlib 值不遵循刻度定位
我试图找到一个解决方案,但不幸的是直到现在都没有奏效。
我有这个代码示例,其中的值非常接近两侧的 y 轴,我想将它们稍微移到中心。两个刻度都应该是相互比较的。
我尝试使用以下代码移动 y 刻度,但它只移动了刻度。
有什么方法可以移动这些值,例如一个从左侧移到 25%,另一个移到 75%,与刻度相同?
谢谢!
c++ - 返回右值引用和临时实现
考虑以下函数。我想要C++17的答案。
问题:
- 表达式
func()
是 xvalue 吗?为什么? - 为什么是
myRef
悬空引用?或者,更具体地说,为什么要func()
返回一个悬空引用?返回右值引用不会导致临时实现,并延长临时对象的生命周期吗?
c++ - xvalue 和 prvalue 之间的一些区别
我最近一直在仔细研究 C++ 类别。lvalue 和 rvalue 之间的区别似乎很清楚,但是当谈到 prvalue 和 xvalue 时,我感到困惑。
给出下面的例子:
运行示例,控制台输入:
123
123
123
-858993460
谁能解释为什么它在最后一个输出中给出了一个意外的值?
这个例子展示了 xvalue 的什么特征?
c++ - 为什么 C++ 允许返回 ifstream 对象?
在 C++98 中,以下代码无法编译,因为 ifstream 没有复制构造函数:
但是,在 C++11 中使用多个 GCC 版本,编译时不会出现警告。这是什么原因?
c++ - C++17 编译器(gcc 或 Microsoft Visual C++),是否有一个选项禁止“不产生临时”功能
在以下情况下,我如何告诉 С++17 编译器创建临时文件(即 C++17 编译器必须考虑复制/移动操作,就像 C++11 和 C++14 编译器一样)
输出(c++14 - 这就是我想要的):
输出(c++17):
我的客户拥有大量 C++11 代码和 C++17 编译器:gcc 8.3.0 和 Microsoft C++ 编译器(来自 Visual Studio 2017 和 2019)。并且有很多地方包含上面的代码。C++17 编译器是否有一个选项可以在这种情况下禁止“不产生临时”功能?
c++ - 即将超出范围的变量是左值还是 xvalue?
当一个即将超出范围的变量被返回或抛出时,它的资源可以被重用,即它可以从 中移动,如下面的 C++ 程序所示:
编译(我们用标志关闭复制/移动省略-fno-elide-constructors
)、链接和执行:
输出:
X()
返回
X(X&&)
~X()
抛出
X(X&&)
~X()
捕获
~X()
x
在上述语句中return x;
和throw x;
表示其资源可以重用的对象。
在工作草案 C++ 编程语言标准[basic.lval-1]中,我们对值类别有以下定义:
- 泛左值是一个表达式,它的求值决定了一个对象或函数的身份。
- xvalue是一个glvalue,它表示一个对象的资源可以被重用(通常是因为它接近其生命周期的尽头)。
- 左值是不是 xvalue的左值。
那么是x
左值还是xvalue?
c++ - 为什么`T&&`不粘?
假设我有以下功能:
发出的编译器错误是:
错误 C2664:“void f2(int &&)”:无法将参数 1 从“int”转换为“int &&”
消息:您不能将左值绑定到右值引用
如果你int&&
再次调用它,它会起作用std::move()
:
但这不应该是必要的吗?在我看来,接收到的变量f(int&& i)
是一个 xvalue。如果f
接收int&&
,那么我们应该能够传递它,不是吗?
仍然是左值如何int&&
接收?f