2016-07-23 5 views
4

[conv]/6で「式eは、初期化がglvalueとしてそれを使用しています場合にのみglvalueとして使用されている」:は、文の正確な意味は何ですか(強調は私です)[CONV]/6

暗黙の変換の影響は、対応する宣言と初期化を実行した後、変換の結果として一時変数 を使用するのと同じです。結果は ファンクションタイプ([dcl.ref])への参照値、Tが オブジェクトタイプへの参照値の場合はx値、それ以外の場合はprvalueである場合、 左辺値です。 初期化でglvalueとして使用されている場合にのみ、式eが glvalueとして使用されます()。

上記の強調表示の意味は、この特定の段落の文脈でどういう意味ですか?

+0

** **が数学的な用語である場合のみ:[https://en.wikipedia.org/wiki/If_and_only_if](https://en.wikipedia.org/wiki/If_and_only_if) – Rotem

+0

** glvalue **は、その評価がオブジェクト、ビットフィールド、または関数の同一性を決定する式です:[http://en.cppreference.com/w/cpp/language/value_category](http://en.cppreference)。 com/w/cpp/language/value_category) – Rotem

答えて

2

その文の意図はiような式が(iが可変である)擬似iが直ちにprvalueに変換されたコンテキストでglvalueとして扱われていないことを明らかにすることです。例えば

jj is not a permitted result of a constant expressionとして、glvalue考えられていた場合、

int main() { 
    const int j = 0; 
    constexpr int i = j; 
} 

に2番目の定義は、病気に形成されたであろう。ただし、jは、初期化ではそれを1つとして使用するため、前の値として使用されるため、リンクされた段落のもう1つのルールが適用されます(定義は整形式です)。

関連する問題