我尝试理解C ++的表达式类型,我读的越多,我就越困惑,因为我发现C ++草案很难理解,因此倾向于使用其他资源,但是它们彼此矛盾,或者没有考虑到C ++版本之间的措辞和定义有很大的变化。
在下文中,我指的是以下草案:
C++11
3.10左值和右值... prvalue(“纯” rvalue)是不是xvalue的rvalue。[示例:调用返回类型不是引用的函数的结果是prvalue。文字的值(例如12、7.3e5或true)也是prvalue。—结束示例]
C++17
3.10左值和右值... prvalue是一个表达式,其求值初始化一个对象或位域,或计算一个运算符的操作数的值,该值由其出现的上下文指定。
C++20
7.2.1值类别*... prvalue是一个表达式,其求值初始化一个对象或位字段,或者计算一个运算符的操作数(由其出现的上下文指定),或者是cv void类型的表达式。
我会理解措词的更改,并进行了一些调整,但对我而言,整个定义都会更改。有人可以帮我理解吗?例如,为什么删除了一个句子,即prvalue是不是xvalue的rvalue?还是为什么删除了有用的示例?