3

https://stackoverflow.com/a/3601661/368896lvalueなどでは、とrvalue(標準を参照)、 、xvalueglvalueの定義が提供されていprvalueます。

ただし、 の定義は の定義をrvalue参照し、 の定義はxvalue右辺値参照を含む特定の種類の式の結果xvalue」を参照します。

したがって、 の技術的な定義を理解するrvalueには、上記の定義でどの種類の「右辺値参照を含む式」が参照されているかを判断する必要があります。この定義を追跡するために、時間をかけて標準 (およびさまざまな投稿) に従うようにしました。他の定義を追跡する必要のない定義が必要です (より明白な低レベルの定義を除く)。

これは野生のガチョウの追跡ですか?考えられるすべてのケースをカバーし、「右辺値参照を含む特定の種類の式の結果」を参照しない、右辺値式と左辺値式の違いの簡潔で厳密な定義を提供することは可能ですか? もしそうなら、そのような定義は何ですか?

4

1 に答える 1

2

右辺値を構成するものは、一連のアドホックルールによって定義されるため、「簡潔」は不可能だと思います。

xvaluesはかなり簡単です:それらは「。を返すもの」ですT&&。これには、それを返す関数、に明示的にキャストする関数、 (直接またはデータメンバーへのポインタを介して)T&&を介してクラスデータメンバーにアクセスする関数が含まれます。T&&

問題は、いたるところにあるprvaluesです。それらが何であるかについての一般的な感覚を得ることができますが、詳細には多くのアドホックルールが含まれます。それが他のどこでも左辺値であるとしても、それが真価値であるreturn valueArgument;と考えることができるという事実のように。valueArgument

基本的に、標準化委員会は標準化を通過し、暗黙的に移動したい場所を探し、「あなたは価値観だ」と言いました。

したがって、「簡潔だが厳密な」定義はありそうにありません。

于 2013-03-10T22:17:18.413 に答える