2013-02-23 15 views
5

Sono abbastanza sicuro che la categoria di valore di letterali integer, character, boolean e floating point sia prvalore.Qual è la categoria del valore di stringhe letterali?

I valori letterali definiti dall'utente sono come le chiamate di funzione, pertanto la loro categoria di valore dipende dal tipo di ritorno della funzione dell'operatore a cui si risolve.

Non sono chiaro su stringhe letterali. Hanno tipo "array of const charx" dove charx è un tipo di carattere.

Si dice nel 3.10:

Il valore di un letterale ... è anche un prvalue.

Ma penso che questo potrebbe non essere valido per stringhe letterali?

Qual è la categoria di valore di una stringa letterale? Come lo hai determinato?

risposta

14

Quindi sono abbastanza sicuro che la categoria di valore di valori interi, di caratteri, di valori booleani e di valori flottanti sia preregolata.

Questo è corretto.

Qual è la categoria di valore di una stringa letterale?

Per Paragrafo 5.1.1/1 della C++ 11 standard:

Un letterale è un'espressione primaria. Il suo tipo dipende dalla sua forma (2.14). Una stringa letterale è un lvalue; tutti gli altri letterali sono prvali.

+1

Questo non ha senso per me. Perché una stringa letterale dovrebbe essere un lvalue e non un valore? –

+3

@RemyLebeau: Perché è un oggetto. Ad esempio, puoi prendere il suo indirizzo, qualcosa che non puoi fare con un intero o un letterale in virgola mobile. http://liveworkspace.org/code/UAvdz$3 –

+2

@RemyLebeau: Perché fondamentalmente _ deve avere spazio di archiviazione. –

Problemi correlati