- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我读了这个answer引起我注意的部分是:
int i;
int* p = &i;
int& f();
int&& g();
int h();
h() // prvalue
g() // glvalue (xvalue)
f() // glvalue (lvalue)
i // glvalue (lvalue)
*p // glvalue (lvalue)
std::move(i) // glvalue (xvalue)
记住这个图表
我很困惑。
如果 glvalue 是左值或 xvalue,rvalue 是右值或 xvalue,那么说 g 是不是错误的()
是一个左值而不说它也是一个右值?与 std::move(i)
相同。
我的上述代码版本会是什么样子:
h() // rvalue (prvalue)
g() // glvalue and rvalue (xvalue)
f() // glvalue (lvalue)
i // glvalue (lvalue)
*p // glvalue (lvalue)
std::move(i) // glvalue and rvalue(xvalue)
至于标准是怎么说的(我只引用最相关的部分):
An rvalue (so-called, historically, because rvalues could appear on the right-hand side of an assignment expression) is an xvalue
和
A glvalue (“generalized” lvalue) is an lvalue or an xvalue.
当然,我可能是错的。如果是这样,请帮我一下:)
最佳答案
If a glvalue is either an lvalue or an xvalue and an rvalue is either a prvalue or an xvalue, isn't it wrong to say that g() is a glvalue without saying that it is also an rvalue?
是的。
如果 g()
是一个xvalue,那么它既是一个glvalue 又是一个rvalue。
关于c++ - xvalues 不是 glvalues 和 rvalues 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44848970/
[conv]/6 (重点是我的): The effect of any implicit conversion is the same as performing the corresponding
有一个限制: Similarly, before the lifetime of an object has started but after the storage which the objec
N4527 5.20 [expr.const]p3 An integral constant expression is an expression of integral or unscoped e
我正在阅读逗号运算符 (N3797::5.18 [expr.comma]) 并遇到以下内容: The type and value of the result are the type and val
我读了这个answer引起我注意的部分是: int i; int* p = &i; int& f(); int&& g(); int h(); h() // prvalue g() // glvalu
在 C++03 中,表达式可以是 rvalue 或 lvalue。 在 C++11 中,表达式可以是: 右值 左值 xvalue glvalue prvalue 两个类别变成了五个类别。 这些新的表达
[intro.execution]/12 中术语 volatile 的相关性是什么? [intro.execution]/12 : Reading an object designated by a
我是一名优秀的程序员,十分优秀!