2013-02-23 9 views
5

Jestem prawie pewny, że kategoria wartości literałów całkowitych, znakowych, boolowskich i zmiennoprzecinkowych jest prvalue.Jaka jest kategoria wartości literałów ciągów?

Literały definiowane przez użytkownika są jak wywołania funkcji, więc ich kategoria wartości zależy od typu zwracanego przez funkcję operatora, której odpowiadają.

Nie jestem pewien w literałach ciągów. Mają typ "array of const charx", gdzie charx to jakiś typ postaci.

mówi w 3.10:

Wartość dosłowna ... jest również prvalue.

Ale myślę, że to może nie dotyczyć literałów ciągów?

Jaka jest kategoria wartości literału literowego? Jak to określiłeś?

Odpowiedz

14

Jestem przekonany, że kategoria wartości liczb całkowitych, znakowych, boolowskich i pływających jest wartościami wartości.

Zgadza się.

Jaka jest kategoria wartości literału literowego?

za § 5.1.1/1 C++ 11 Standard:

Dosłowne jest pierwotnym wyrażeniu. Jego rodzaj zależy od formy (2.14). Literał ciągu to l-wartość; wszystkie inne literały są wartościami.

+1

To nie ma dla mnie sensu. Dlaczego literał łańcuchowy miałby być lwartością, a nie wartością pryncypium? –

+3

@RemyLebeau: Ponieważ jest to obiekt. Możesz na przykład wziąć jego adres, coś, czego nie możesz zrobić z literałem całkowitym lub zmiennoprzecinkowym. http://liveworkspace.org/code/UAvdz$3 –

+2

@RemyLebeau: Ponieważ w zasadzie _ musi mieć pamięć. –

Powiązane problemy