我想要澄清C++值类别。
struct Foo {...};
void do_something(Foo{});上面的Foo{}是r值还是x值?
我知道有一个价值类别的层次结构,r-值实际上要么是x值,要么是pr值。我也知道标准上说“临时物化是一个x值”,但我不确定临时物化的创建是否符合这个定义。
但我不确定的是gl-value和r-value是否是层次结构中的“抽象”类别,而leafs (l-value、x-value和pr-value)是实际实现。
有人能给我解释一下吗?
发布于 2021-02-04 14:54:00
来自https://eel.is/c++draft/basic.lval (查阅日期: 04/02/2021):
每个表达式都属于这个分类法中的基本分类之一: lvalue、xvalue或prvalue。表达式的此属性称为其值类别。
这就回答了你的问题:gl值和r值是否是值的类别:它们是。
关于您的具体情况是什么类型的值,让我们来看看xvalue:
..。狙击..。
[注3:表达式如果为x值,则为:
你的案子似乎不符合其中任何一个。现在让我们看一下prvalue:
类型的表达式。
您的情况似乎正在初始化一个对象。出于这个原因,我想说这是一种价值。
https://stackoverflow.com/questions/66047692
复制相似问题