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)
- rvalues
- glvalues(generalized lvalue)
- xvalueとlvalueをあわせて、glvaluesと言う。
既存のrvalue、つまり、C++03の意味のrvalueを、prvaluesという。
xvalueとprvaluesをあわせて、rvaluesという。
lvalue, rvalueを、左辺値、右辺値などというのは間違っているように、これらは、あえて訳さない方が良い。
これは、新しい機能や概念を導入したわけではない。ただ、既存の概念を、細分化しただけである。
No comments:
Post a Comment