2013-02-23 10 views
5

私は整数、文字、ブール値、および浮動小数点リテラルの値カテゴリがprvalueであると確信しています。文字列リテラルの値カテゴリとは何ですか?

ユーザー定義のリテラルは関数呼び出しのようなものなので、値のカテゴリは解決する演算子関数の戻り値の型によって決まります。

文字列リテラルではわかりません。彼らは "const charxの配列"の型を持っています。charxは文字型です。

それは3.10で述べている:

リテラルの値...もprvalueです。

しかし、これは文字列リテラルには当てはまらないと思いますか?

文字列リテラルの値カテゴリは何ですか?これをどうやって決めましたか?

答えて

14

整数、文字、ブール値、浮動リテラルの値のカテゴリはprvaluesです。

これは正しいです。

文字列リテラルの値カテゴリとは何ですか?

リテラルが一次式である:C++ 11標準のパラグラフ5.1.1/1当たり

。その種類はその形式(2.14)に依存します。 文字列リテラルは左辺値です。他のすべてのリテラルはprvaluesです。

+1

それは私には意味がありません。なぜ文字列リテラルは左辺値で、正値ではないでしょうか? –

+3

@RemyLebeau:それはオブジェクトなので。たとえば、整数や浮動小数点型のリテラルではできないようなアドレスを取ることができます。 http://liveworkspace.org/code/UAvdz$3 –

+2

@RemyLebeau:基本的には記憶域が必要なためです。 –

関連する問題