2010-03-30

N3055: A Taxonomy of Expression Value Categories

N3055: A Taxonomy of Expression Value Categories

lvalueとrvalueが、新たに細分化されてカテゴリ分けされる。

そもそも、rvalueというのは、実際のストレージを持たなくてもいいオブジェクトである。これに対して、rvalue referenceは、実際のストレージが必要である。rvalue referenceを、既存のrvalueという概念に当てはめると、問題がある。

しかし、rvalue、lvalueは、60年代から使われている用語である。その当時からすでに、単なる右辺、左辺という意味ではなかった。

そこで、lvalueとrvalueを、細分化する。

xvalue(eXpiring value)
rvalue referenceに束縛した結果を、xvalueという。これは、eXpiring valueである。rvalue referenceというのは、valueのリソースをmoveするのに使われることから、このように名付けられた。
lvalue
以前と変わらず。
prvalues(pure rvalues)

既存のrvalue、つまり、C++03の意味のrvalueを、prvaluesという。

rvalues

xvalueとprvaluesをあわせて、rvaluesという。

glvalues(generalized lvalue)
xvalueとlvalueをあわせて、glvaluesと言う。

lvalue, rvalueを、左辺値、右辺値などというのは間違っているように、これらは、あえて訳さない方が良い。

これは、新しい機能や概念を導入したわけではない。ただ、既存の概念を、細分化しただけである。

No comments: