Почему строковые литералы имеют значение l-, а все остальные литералы имеют значение r-?

C++03 5.1 Первичные выражения
§2:

Литерал — это первичное выражение. Его тип зависит от формы (2.13). Строковый литерал — это lvalue; все остальные литералы являются rvalue.

В чем причина этого?
Насколько я понимаю, строковые литералы являются объектами, а все остальные литералы — нет. И значение l-всегда относится к объекту.

Но тогда возникает вопрос, почему строковые литералы являются объектами, а все остальные литералы — нет?
Это обоснование кажется мне больше похожим на проблему яйца или курицы.

Я понимаю, что ответ на этот вопрос может быть связан с аппаратной архитектурой, а не с C/C++ как языками программирования, тем не менее я хотел бы услышать то же самое.

Примечание. :Я помечаю этот вопрос как c и c++, потому что в стандарте C99 также есть аналогичные цитаты, в частности §6.5.1.4

53
задан osgx 5 December 2012 в 14:13
поделиться